A nuestra lista de Favoritos, voy a agregarle la funcionalidad de que, al seleccionar un tema, éste comience a escucharse.
Recordemos que la lista starred es parte de un UITableViewController
, entonces, para manejar la selección, pondremos código en didSelectRowAtIndexPath
. La idea es tomar el SpotifyTrack
respectivo y pasárselo al session y hacer el play.
El código es el siguiente:
{
SpotifyTrack* track = [starred objectInTracksAtIndex:indexPath.row];
// las siguientes instrucciones hacen que comience a sonar el track
[session loadTrack:track];
[session play];
}
Para tener feedback del tema que está sonando, podemos usar el prompt
del NavigationBar
. Entonces agreguemos la siguiente línea al final del método anterior:
¿Pero.. como nos enteramos que el tema terminó de sonar? Para ello está el session delegate
y en particular el método sessionEndedPlayingTrack
que escribiremos de la siguiente manera, para limpiar el prompt y quitar el nombre del tema que acaba de terminar de sonar:
{
self.navigationItem.prompt = nil;
}
Otro método importante relacionado con el audio, es streamingError
que podemos implementarlo para mostrar un alerta en caso de error:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”ERROR en Streaming”
message:[err localizedDescription]
delegate:nil
cancelButtonTitle:@”OK”
otherButtonTitles:nil];
[alert show];
}
Si son usuarios asiduos de Spotify Premium, sabrán que no puede hacerse play de más de un tema al mismo tiempo. Es decir, usando dos clientes (iPhone y Mac, por ejemplo) si está sonando un tema en el iPhone y luego intento hacer play de otro tema en el Mac, Spotify parará el tema de iPhone y comenzará a sonar el del Mac. En el iPhone aparecerá un alerta de que la cuenta se está usando en otro dispositivo.
Obviamente con libspotify
tenemos el control de todo esto. El session delegate
tiene el método sessionLostPlayToken
que informa de esta situación:
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@”En Pausa”
message:@”Se ha hecho Play en otra aplicación cliente usando su cuenta Spotify, por ello éste dispositivo dejará de sonar”
delegate:nil
cancelButtonTitle:@”OK”
otherButtonTitles:nil];
[alert show];
}
El session delegate
y el playlist delegate
tienen varios métodos todos opcionales. Me parece una buena práctica implementarlos a todos, aunque sea haciendo un NSLog
, así podemos llevar tracking de cómo suceden estos eventos.
Para terminar, si queremos completar un poco más nuestro cliente, pondremos un botón de pausa que ejecute el siguiente código:
Bueno, hasta aquí he dado los tips mínimos para hacer un cliente Spotify en iOS. Confío en que sirva como puntapié para que se animen a incorporarlo en sus aplicaciones.
Un artículo de Angel Traversi
Enlaces relacionados
Desarrollo iOS: Incorporemos Spotify en nuestras aplicaciones, parte 1
Desarrollo iOS: Incorporemos Spotify en nuestras aplicaciones, parte 2