SOW上已经有几个问题,关于playing audio in background,但我的情况有点不同(据我所知!)
所以我在我的应用程序中有一个播放列表,用户可以选择循环播放音频,或者随机/连续播放应用中可用的所有音频。
使用以下代码和所需的Info.plist设置:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive:YES error:nil];
Info.plist设置:
<key>UIBackgroundModes</key>
<array>
<string>audio</string>
</array>
音频在后台正常工作,即使屏幕被锁定,但音频播放结束时也会出现问题。 使用NSLogs,我可以看到代码再次到达AudioPlayer的“播放”方法,但是音频不播放下一首歌曲或者在循环中播放的歌曲。
有人有指针吗?
答案 0 :(得分:0)
阅读documentation,相关段落:
我的音频存储在应用中的本地。 当UIBackgroundModes键包含音频值时,系统的媒体框架会自动阻止相应的应用程序在移动到后台时被挂起。 只要播放音频或视频内容或录制音频内容,该应用程序就会继续在后台运行。
但是,如果录制或播放停止,系统会暂停该应用。
基本上,为了破解设置,我使用了两个AVAudioPlayers,而不是等待audioPlayerDidFinishPlaying的委托回调:,我解决了这个问题:
if((audioPlayer1.duration - audioPlayer1.currentTime)&lt; 1){
//play Audio 2
}
不太确定是否有比此更好的建议?