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 后台状态监控通话状态的主要内容,如果未能解决你的问题,请参考以下文章

Qt监控后台服务运行状态

Shell脚本监控LVS后台服务器存活状态

如何在 JSF 组件中监控异步/后台线程状态并获取通知

使用go-zero微服务框架实现云监控后台(三.终端状态更新json文件实现)

iOS--实时监控网络状态的改变

ios 监控键盘状态