播放完成后,iOS背景音频将停止

时间:2014-10-22 14:30:10

标签: ios audio avaudioplayer avaudiosession

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的“播放”方法,但是音频不播放下一首歌曲或者在循环中播放的歌曲。

有人有指针吗?

1 个答案:

答案 0 :(得分:0)

阅读documentation,相关段落:

我的音频存储在应用中的本地。 当UIBackgroundModes键包含音频值时,系统的媒体框架会自动阻止相应的应用程序在移动到后台时被挂起。 只要播放音频或视频内容或录制音频内容,该应用程序就会继续在后台运行。

但是,如果录制或播放停止,系统会暂停该应用。

基本上,为了破解设置,我使用了两个AVAudioPlayers,而不是等待audioPlayerDidFinishPlaying的委托回调:,我解决了这个问题:

if((audioPlayer1.duration - audioPlayer1.currentTime)&lt; 1){

 //play Audio 2

}

不太确定是否有比此更好的建议?