You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS非VoIP场景下是否可通过CallKit获知普通来电呼入?

iOS系统CallKit蜂窝来电呼入状态检测相关解答

明确结论

无法通过CallKit检测普通蜂窝来电的呼入状态。

具体原因说明

  • CallKit框架的设计初衷是为第三方VoIP应用提供和系统原生电话一致的通话交互体验,仅能管理你的App自身发起或接收的VoIP通话,没有权限访问系统原生蜂窝电话的任何通话状态、呼入事件数据。
  • 苹果将用户的通话相关信息列为最高级别的敏感隐私数据,从未对外开放过可获取蜂窝电话呼入、通话状态的公开API,所有第三方App都无法通过正规公开渠道拿到这类数据。

可选替代方案(仅适用于特定场景)

如果你的需求仅为来电呼入时调整App自身的状态(比如暂停正在播放的音频、停止录音等),可以通过监听AVAudioSession的中断通知间接实现:

// 注册音频中断通知示例(Objective-C)
[[NSNotificationCenter defaultCenter] addObserver:self 
                                         selector:@selector(audioSessionInterrupted:) 
                                             name:AVAudioSessionInterruptionNotification 
                                           object:[AVAudioSession sharedInstance]];
// 注册音频中断通知示例(Swift)
NotificationCenter.default.addObserver(self,
                                       selector: #selector(audioSessionInterrupted(_:)),
                                       name: AVAudioSession.interruptionNotification,
                                       object: AVAudioSession.sharedInstance())

注意:该方案只能感知到音频会话被系统中断的事件,无法判定中断来源是否为蜂窝来电,也无法获取任何和通话相关的信息。

内容的提问来源于stack exchange,提问作者CapiPato

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 19:36:00