/ / Spotify SDK en Swift 3.0: cómo saber cuándo termina una canción - ios, swift, swift3, spotify

Spotify SDK en Swift 3.0: cómo saber cuándo termina una canción: ios, swift, swift3, spotify

Estoy creando una aplicación personal en Swift usando elApi de Spotify, y una cosa que debe hacer es reproducir otra canción una vez que la canción que estaba sonando ha terminado. Tengo las identificaciones de las canciones ordenadas de la forma en que quiero que sean, y puedo reproducirlas con éxito.

Solo necesito saber si hay una manera de saber cuándouna canción está finalizando, así que sé cuándo comenzar a reproducir la siguiente o hacer otras cosas (hago una solicitud HTTP cada vez que una canción termina por otra razón).

¡Cualquier sugerencia o recurso que me pueda señalar es increíblemente útil! No se pudo encontrar una respuesta a través de las búsquedas de Google :(

Spotify API: ¿hay alguna manera de determinar cuándo una canción ha terminado de reproducirse?

Esta es una pregunta similar que se publicó pero fue para javascript y nunca fue respondida.

Respuestas

3 para la respuesta № 1

Puedes implementar el SPTAudioStreamingPlaybackDelegate protocolo, configure el reproductor de Spotify playbackDelegate propiedad e implementación didStopPlayingTrack. Una clase de ejemplo se vería así:

class MyClass: NSObject, SPTAudioStreamingPlaybackDelegate {
var player = SPTAudioStreamingController.sharedInstance()


func setup() {         // Whatever function does the setup.
player?.playbackDelegate = self
}

func audioStreaming(_ audioStreaming: SPTAudioStreamingController!, didStopPlayingTrack trackUri: String!) {
playNextSong()      // Or whatever else you wish to do here.
}

func playNextSong() {
// ...
}
}

(Tenga en cuenta que la función de configuración podría ser cualquier cosa, como viewDidLoad si el objeto que observa al jugador es un controlador de vista en lugar de una subclase NSObject.)

Porque didStopPlayingTrack es un delegar función, el SDK de Spotify debe administrar cuandorecibe una llamada (más específicamente, el jugador debe llamarlo en su objeto delegado); no necesita llamarlo usted mismo mientras el delegado del jugador esté configurado.