音频会话中断的通知

时间:2016-08-08 14:58:41

标签: ios objective-c nsnotificationcenter avaudiosession

在我的应用中,我正在运行后台服务,如果其他应用播放音频,我希望我的服务得到通知,例如电话或音乐应用或广播应用正在播放音频。

从AVAudioSession类文档中,似乎AVAudioSessionInterruptionNotification是我需要的东西。

所以,我试过了:

-(void)initialization{
     [[NSNotificationCenter defaultCenter] addObserver:self
                                                     selector:@selector(handleAudioSessionInterruption:)
                                                         name:AVAudioSessionInterruptionNotification
                                                       object:nil];
}

-(void)handleAudioSessionInterruption:(NSNotification*)notification{
   NSLog("Get notified for interruption");
}

我在iphone上运行我的应用程序。当我拨打电话或拨打电话时,我的应用会收到有关音频会话中断的通知。它运作良好!

但是当我打开一个播放音频的收音机/音乐应用时,我的应用不会得到通知。为什么?当音乐/广播应用播放音频时,我的应用如何获得通知?

1 个答案:

答案 0 :(得分:0)

如docs ::

中所述

/ *系统中断音频会话时以及何时通知已注册的侦听器  中断已经结束。检查通知的userInfo字典中的中断类型 - 开始还是结束。  在结束中断通知的情况下,检查userInfo字典中的AVAudioSessionInterruptionOptions  指示是否应恢复音频播放。  * /

所以基本上如果任何其他应用程序试图接管音频会话,那么将发布中断通知。

例如:尝试打开Apple的默认音乐应用程序或尝试录制默认相机应用程序中的视频。他们接管音频会话,你会收到同样的通知。

为了安全起见:: 听取通知的实例应该仍然在内存中存活。

相关问题