Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to play next track from array
    primarykey
    data
    text
    <p>I'm building an app and using spotify. I managed to start and pause a song....But i can't get my head around the playnext button and playprevious button. can some please tell me how to handle these events with the libspotify playbackmanager. I have a playlist view which passes currentsong to my songviewController..How can i call from within my songViewController the next song. This is how i'm calling the currentsong...</p> <pre><code> - (void)viewDidLoad { [super viewDidLoad]; self.playbackManager = [[SPPlaybackManager alloc] initWithPlaybackSession:[SPSession sharedSession]]; [self addObserver:self forKeyPath:@"currentSong.name" options:NSKeyValueObservingOptionInitial context:nil]; [self addObserver:self forKeyPath:@"currentSong.artists" options:NSKeyValueObservingOptionInitial context:nil]; [self addObserver:self forKeyPath:@"currentSong.album.cover.image" options:NSKeyValueObservingOptionInitial context:nil]; [SPTrack trackForTrackURL:self.currentSong.spotifyURL inSession:[SPSession sharedSession] callback:^(SPTrack *track) { [self.playbackManager playTrack:track callback:^(NSError *error) { if (error) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot Play Track" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } }]; }]; } - (void)viewDidUnload { [self trackArtist]; [self trackTitle]; [self coverView]; [self currentSong]; [self removeObserver:self forKeyPath:@"currentSong.name"]; [self removeObserver:self forKeyPath:@"currentSong.artists"]; [self removeObserver:self forKeyPath:@"currentSong.album.cover.image"]; self.playbackManager.playbackSession.playing = NO; [super viewDidUnload]; // Release any retained subviews of the main view. } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"currentSong.name"]) { self.trackTitle.text = self.currentSong.name; } else if ([keyPath isEqualToString:@"currentSong.artists"]) { self.trackArtist.text = [[self.currentSong.artists valueForKey:@"name"] componentsJoinedByString:@","]; } else if ([keyPath isEqualToString:@"currentSong.album.cover.image"]) { self.coverView.image = self.currentSong.album.cover.image; } else { [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } } #pragma mark - - (IBAction)playTrack:(id)sender { if (self.playbackManager.isPlaying == NO) { self.playbackManager.isPlaying = YES; } else if (self.playbackManager.playbackSession.playing == YES) { self.playbackManager.isPlaying = NO; } } -(IBAction)nextTrack:(id)sender { NSLog(@"index is : %i",nextIndex); NSLog(@"playlistItems: %i",[currentPlaylist.items count] ); self.nextIndex++; NSLog(@"index is : %i",nextIndex); if (self.playbackManager.isPlaying == YES) self.playbackManager.isPlaying = NO; NSLog(@"0=yes 1=no : %i",_playbackManager.isPlaying); SPPlaylistItem *item = [self.currentPlaylist.items objectAtIndex:self.nextIndex]; if (item.itemClass == [SPTrack class]) { [self.playbackManager playTrack:(SPTrack*)item callback:^(NSError *error) { if (error) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Cannot Play Track" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } } ]; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload