所以在我的应用程序中,在 iOS 6 上运行,一切似乎都可以正常工作。我使用旧的 C API 格式通过回调捕获中断;通过设置:AudioSessionInitialize(NULL, NULL, interruptionListenerCallback, (__bridge void *)self)
这很棒。不过,使用 iOS 7 SDK,当设备收到呼叫或警报响起时,似乎永远不会调用我的中断回调。
环顾四周后,我听说旧的 C api 已被弃用,您应该使用更新的 AVAudioSession 函数。更多阅读表明 AVAudioSession 委托已被弃用,您应该使用NSNotification
forAVAudioSessionInterruptionNotification
来捕捉中断并做任何需要做的事情。
对我来说,似乎这个通知实际上从未被触发,因此我永远不会被正确地打断,这会在通话结束后破坏我所有的音频内容。
我像这样注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(AudioInterruption:) name:AVAudioSessionInterruptionNotification object:nil];
目前,该AudioInterruption:
函数只是记录它被触发了。日志和任何断点都没有触发。
需要明确的是,最初的音频播放和录制工作正常。当发生中断(例如来电或警报)时,不会触发中断通知。如果需要更多周边代码,请告诉我。