中断后恢复AVAudio会话

时间:2019-07-19 11:41:51

标签: ios avaudioplayer avaudiosession ios-background-mode

问题:

在中断(例如电话呼叫或使用其他应用程序)后,我的应用程序的音频无法恢复。当我的应用程序在中断发生之前已经处于后台状态时,就会发生此问题。

处理中断的代码:

- (void)handleInterruption:(NSNotification *) notification{
    if (notification.name != AVAudioSessionInterruptionNotification || notification.userInfo == nil) {
        return;
    }

    NSDictionary *info = notification.userInfo;

    if ([notification.name isEqualToString:AVAudioSessionInterruptionNotification]) {

        if ([[info valueForKey:AVAudioSessionInterruptionTypeKey] isEqualToNumber:[NSNumber numberWithInt:AVAudioSessionInterruptionTypeBegan]]) {


            NSLog(@"InterruptionTypeBegan");

        } else {
            NSLog(@"InterruptionTypeEnded");
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
                NSLog(@"playing audio");

               self->_audioPlayer.numberOfLoops = -1;
               [self->_audioPlayer play];

            });
        }
    }
}

在Xcode控制台中,我按以下顺序看到日志,但是没有音频播放:

  1. InterruptionTypeBegan
  2. InterruptionTypeEnded
  3. 播放音频

对于该主题的任何建议和想法,我将不胜感激。谢谢。

编辑:

我注意到许多在线音乐流应用程序(例如Saavn和Spotify)都存在相同的问题。

0 个答案:

没有答案