iOS 后台状态监控通话状态
Posted
技术标签:
【中文标题】iOS 后台状态监控通话状态【英文标题】:iOS monitoring call state in background state 【发布时间】:2016-06-01 09:46:51 【问题描述】:我的应用程序一直在录音,它应该在检测到电话时播放声音并停止录音。通话结束后,录音应该继续。
我已经在前台使用 CTCallCenter 完成了这些任务。
但是,当我的应用程序处于后台时,CTCallCenter 无法正常工作。即使在我的应用程序中添加背景标志“VoIP”,CTCallCenter 也会错过 CallDisconnected。这是ios的bug吗?
所以我尝试了“AVAudioSessionInterruptionNotification”。似乎它从不错过任何一个 InterruptionBegin 和 InterruptionEnd。但它不起作用,因为我需要在检测到 InterruptionBegin 后播放声音。显然,InterruptionBegin 意味着我的音频会话处于非活动状态并且无法发出声音。
有什么方法可以让 CTCallCenter 在我的情况下可用?
【问题讨论】:
CTCallCenter - Call Event Handler - in background state的可能重复 【参考方案1】:我发现检查后台是否有 GSM 呼叫的唯一方法是检查 GSM 呼叫使用的音频单元的可用性。
所以
BOOL isOtherAudioPlaying=[[AVAudioSession sharedInstance] isOtherAudioPlaying];
会告诉你是否有一个活跃的 GSM 通话。我不太确定它是否对使用音频单元的其他应用程序有副作用。我已经尝试使用相机和语音备忘录,它们似乎已暂停,因此它不会影响您的应用。
【讨论】:
以上是关于iOS 后台状态监控通话状态的主要内容,如果未能解决你的问题,请参考以下文章