AVAudioPlayer被facetime打断不能恢复问题

原来的代码:

-(void)interrupt:(NSNotification *)noti {
    int type = [noti.userInfo[AVAudioSessionInterruptionTypeKey] intValue];
    if (type == AVAudioSessionInterruptionTypeBegan) {
        // 打断
    } else {
        // 恢复
        AVAudioSessionInterruptionOptions options = [noti.userInfo[AVAudioSessionInterruptionOptionKey] unsignedIntegerValue];
        if (options == AVAudioSessionInterruptionOptionShouldResume) {
            [audioPlayer play];
        }
    }
}

原因:AVAudioSession没有设置后台播放。

当挂断facetime时,FaceTime界面还没有消失的时候应用就已经接收到恢复通知,此时应用在后台,虽然执行了[audioPlayer play];,由于没有设置后台播放,音乐并不会播放。
添加如下代码,设定AVAudioSession为后台播放

    AVAudioSession *session = [AVAudioSession sharedInstance];
    [session setActive:YES error:nil];
    [session setCategory:AVAudioSessionCategoryPlayback error:nil];

这时挂断facetime时,音乐能够正常恢复播放。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容