我的应用程序一直在录制,它应播放声音并在检测到电话时停止录制。通话结束后,录音应该继续。
我已经在CTCallCenter的前台完成了这些任务。
但是,当我的应用处于后台时,CTCallCenter无法正常工作。即使向我的应用添加背景标志“VoIp”,CTCallCenter也会错过CallDisconnected。这是iOS的错误吗?
所以我尝试了“AVAudioSessionInterruptionNotification”。它似乎永远不会错过任何一个InterruptionBegin和InterruptionEnd。但它不起作用,因为我需要在检测到InterruptionBegin后播放声音。显然,InterruptionBegin意味着我的音频会话处于非活动状态,无法发出声音。
有没有办法让CTCallCenter适用于我的情况?
答案 0 :(得分:1)
我发现在后台检查是否有GSM呼叫的唯一方法是检查GSM呼叫使用的音频单元的可用性。
所以
BOOL isOtherAudioPlaying=[[AVAudioSession sharedInstance] isOtherAudioPlaying];
会告诉您是否有有效的GSM通话。我不确定它是否与其他使用音频设备的应用有副作用。我已经尝试了相机和语音备忘录,看起来它们已暂停,因此它不会影响您的应用。