iOS版。在后台播放/暂停和转发非iPod音乐播放器

时间:2014-08-20 17:31:44

标签: ios events avaudiosession mpmusicplayercontroller

我正在寻找一种控制播放,暂停和转发音乐播放器的解决方案,例如Google Play或Spotify应用。 以下代码适用于默认音乐应用播放/暂停音乐:

iPodMusicPlayer = [MPMusicPlayerController iPodMusicPlayer];
if ([iPodMusicPlayer playbackState] == MPMusicPlaybackStatePlaying) {
    NSLog(@"Pause music");
    [iPodMusicPlayer pause];
}

else if ([iPodMusicPlayer playbackState] == MPMusicPlaybackStatePaused){
    NSLog(@"Play music");
    [iPodMusicPlayer play];
}

转发下一首歌:

[iPodMusicPlayer skipToNextItem];

有没有办法对其他音乐播放器做同样的事情?

我尝试过下一段代码,但没有成功:

bool active = [[AVAudioSession sharedInstance] isOtherAudioPlaying];

if (active) {
    [[AVAudioSession sharedInstance] setActive:YES withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
}

else{
    [[AVAudioSession sharedInstance] setActive:NO withOptions:AVAudioSessionSetActiveOptionNotifyOthersOnDeactivation error:nil];
}

1 个答案:

答案 0 :(得分:0)

错误560557684适用于AVAudioSessionErrorCodeCannotInterruptOthers。当您的后台应用程序尝试激活不与其他音频会话混合的音频会话时,会发生这种情况。后台应用程序无法启动不会与前台应用程序的音频会话混合的音频会话,因为这会中断用户当前正在使用的应用程序的音频。

要解决此问题,请确保将会话类别设置为可混合的会话类别,例如AVAudioSessionCategoryPlayback。另外一定要设置类别选项AVAudioSessionCategoryOptionMixWithOthers(必需)和AVAudioSessionCategoryOptionDuckOthers(可选)。

AVAudioRecorder not recording in background after audio session interruption ended