Desarrollo iOS: Incorporemos Spotify en nuestras aplicaciones, parte 2

Vamos a continuar con el cliente simple de Spotify que comencé la semana pasada. Ahora es el turno del audio. 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...

Vamos a continuar con el cliente simple de Spotify que comencé la semana pasada. Ahora es el turno del audio.

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:

– (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

{

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:

self.navigationItem.prompt = [NSString stringWithFormat:@»%@ (%@)», track.name, track.artistName];

¿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:

-(void)sessionEndedPlayingTrack:(SpotifySession*)session_;

{

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:

-(void)session:(SpotifySession*)session_ streamingError:(NSError*)err;

{

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:

-(void)sessionLostPlayToken:(SpotifySession *)session;

{

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:

[session pause];

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

In this article


Join the Conversation