アプリのバックグラウンド オーディオを適切に有効にしました (plist 内)。バックグラウンドで SPPlaybackManager を使用して現在のトラックが完了した後に次のトラックを再生する (電話がロックされているかオフになっている場合) 機能しません。
現在のトラックが終了し、オーディオが停止すると、電話のロックが解除されてアプリが再びアクティブになるまで、アプリは次のトラックの再生を開始しません。
これを修正するにはどうすればよいですか? 次のトラックの再生を開始するために使用しているコードのスニペットを次に示します。現在のトラックが nil になるのを確認し、次のトラックの再生を開始します。ログは、次の現在のトラックがプレイバック マネージャー オブジェクトに設定されていることを示していますが、残念ながら何も表示されません。
- (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if([keyPath isEqualToString:@"spotifyPlaybackManager.currentTrack"]){
NSLog(@"%@ %@",keyPath,self.spotifyPlaybackManager.currentTrack);
if(self.spotifyPlaybackManager.currentTrack==nil && self.mode == PlayerModeSpotify){
NSLog(@"PLAY NEXT");
[self.spotifyPlaybackManager playTrack:self.nextSPTrack callback:^(NSError *error){
if(error) TKLog(@"Spotify Playback Error %@",error);
}];
}
[[NSNotificationCenter defaultCenter] postNotificationName:PlayerNowPlayingItemDidChange object:self];
return;
}
[super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
}
コンソール:
spotifyPlaybackManager.currentTrack (null)
PLAY NEXT
spotifyPlaybackManager.currentTrack <SPTrack: 0x60f8390>: Karaoke