iOS监控后台状态

时间:2016-06-01 09:46:52

标签: ios interrupt-handling phone-call

我的应用程序一直在录制,它应播放声音并在检测到电话时停止录制。通话结束后,录音应该继续。

我已经在CTCallCenter的前台完成了这些任务。

但是,当我的应用处于后台时,CTCallCenter无法正常工作。即使向我的应用添加背景标志“VoIp”,CTCallCenter也会错过CallDisconnected。这是iOS的错误吗?

所以我尝试了“AVAudioSessionInterruptionNotification”。它似乎永远不会错过任何一个InterruptionBegin和InterruptionEnd。但它不起作用,因为我需要在检测到InterruptionBegin后播放声音。显然,InterruptionBegin意味着我的音频会话处于非活动状态,无法发出声音。

有没有办法让CTCallCenter适用于我的情况?

1 个答案:

答案 0 :(得分:1)

我发现在后台检查是否有GSM呼叫的唯一方法是检查GSM呼叫使用的音频单元的可用性。

所以

BOOL isOtherAudioPlaying=[[AVAudioSession sharedInstance] isOtherAudioPlaying];

会告诉您是否有有效的GSM通话。我不确定它是否与其他使用音频设备的应用有副作用。我已经尝试了相机和语音备忘录,看起来它们已暂停,因此它不会影响您的应用。

相关问题