【问题标题】:AVAudioplayer doesn't play in backgroundAVAudioplayer 不在后台播放
【发布时间】:2013-01-25 13:13:46
【问题描述】:

这是不是重复的问题,我到处搜索,但不幸的是我没有找到任何解决方案。

我的问题我想在应用程序处于后台时播放音乐文件,它应该在调用任何本地通知时开始播放。

我有一个功能,我正在检查应用程序是否存在于后台,然后我写了播放音乐文件的语句,但 [avaudioplayer play] 总是返回 NO .我检查了错误代码,但它显示为空。

我还编辑了 info.plist 文件以将音频文件设置为在后台播放。

【问题讨论】:

  • 以上这两个我已经提到但没有结果:(。PLAY函数返回NO。我的应用程序在后台,然后我正在尝试播放音乐(不像startMusic--->进入背景--->继续播放)
  • 我猜它需要在主线程上运行,然后你可以放入后台线程而不是其他方式,但不确定!
  • @Cris 我也在主线程中执行过,但不幸的是……
  • 查看我的回答,您使用的是设备还是模拟器。

标签: iphone avaudioplayer


【解决方案1】:

像这样设置音频会话:(audioPlayer是AVPlayer的实例)

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
    NSLog(@"inside observer");
    if (self.audioPlayer.status == 1)
    {
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback
                                               error:nil];
        [[AVAudioSession sharedInstance] setActive:YES
                                             error:nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        [self.audioPlayer play];
    }
}

还有一件事要做在应用程序的 appname-info.pist 中添加一个字段,即“必需的背景模式”,并向该数组添加一个名为“应用程序播放音频”的项目。

那么它肯定会起作用:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多