【发布时间】:2012-09-27 10:25:59
【问题描述】:
我正在尝试构建一个 iOS 应用程序 (iOS > 5.0)。它应该在用户设置的计时器结束时播放音乐文件。这是我到目前为止的设置:
- 我用的是avplayer
- 我已将 plist 中的背景模式设置为“应用播放音频”
-
在我的 appDelegate 中有:
NSError *sessionError = nil; [[AVAudioSession sharedInstance] setDelegate:self]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError]; -
在一首歌曲将要播放之前:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError]; [[AVAudioSession sharedInstance] setActive:YES error:&sessionError]; -
我在“playerItemDidPlayToEnd”上通知我的应用程序,停止播放器并告诉其他应用程序(如 music.app)再次激活
_avPlayer = nil; NSError *sessionError = nil; [[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:&sessionError];
这很好用。您可以让您的音乐应用在后台播放。我的应用程序开始播放音乐应用程序逐渐消失的歌曲。我的歌曲已播放,如果完成,音乐应用程序将继续播放。但前提是我的应用不在后台。
在后台我得到错误:
Error Domain=NSOSStatusErrorDomain Code=560161140“操作无法完成。(OSStatus 错误 560161140。)”
是否有可能在后台播放(在自定义事件上)和在 f.e. 之间切换这两种组合? music.app 和我的应用在后台是不可能的?
这是我的播放器型号的代码:http://pastie.org/4830995
【问题讨论】:
标签: ios audio background avplayer