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

iOS设备锁定状态接听VoIP通话后直接打开Flutter应用是否可行?

iOS锁屏状态下接听VoIP通话后直接唤起Flutter应用的可行性问题

我正在开发的项目核心聚焦于优质UI/UX体验,目前遇到的问题是在iOS设备锁定状态下接听VoIP通话的相关需求。

官方文档说明

苹果推出了CallKit和PushKit功能以支持调用原生通话界面,该方案效果不错但不符合我的场景需求。
目前已有大量这两个组件的相关资料,比如:

  • Receiving incoming calls
  • Responding to VoIP Notifications from PushKit
  • 非常实用的iOS 13 PushKit限制说明

已有相关提问参考

该问题此前已有大量相关提问,大多集中在两年前,因此我重新发起问询。

  • 附带教程的优质参考 - Lock Screen UI with incoming Call
  • iOS - Can I open my VoIP app on answering call using Callkit
  • CallKit: Launch app when screen is locked
  • 相关GitHub issue讨论

额外的CallKit/PushKit教程参考

  • 原生iOS VoIP推送接收实现教程
  • (Flutter专属,也可用于原生iOS开发)flutter_ios_webrtc_kit实现参考
  • RayWenderlich CallKit教程
  • PushKit接收来电实现教程
  • Vonage VoIP推送+CallKit处理教程
  • Medium CallKit系统通话界面实现教程

但据我查阅,上述所有资料都未提供接听通话后直接打开应用的实现机制。

已探索的可行方案说明

按照现有实现逻辑,唯一可行的方式是使用CallKit界面上6个按钮的最后一个(可选择搭配AppIcon),见下图:
CallKit界面按钮示例

示例参考

  • 带有App图标和自定义铃声的GitHub示例

我的问题

我暂时未找到iOS锁定状态下接听VoIP通话后直接打开我的Flutter应用的解决方案,请问该需求是否能够实现?


解答

该需求可实现,适配逻辑受iOS系统规则限制,分两种场景:

  1. 无锁屏密码的设备:接听CallKit来电时系统会自动将应用唤醒到前台,无需额外配置,仅需保证PushKit回调触发时,你已经完成CallKit注册、Flutter引擎预加载即可。
  2. 有锁屏密码的设备:系统默认不会直接解锁进入应用,接听后应用会保持后台运行,同时锁屏顶部会显示通话状态条,用户点击条带验证密码后即可进入应用。如果要实现接听后直接唤起跳转,可将CallKit的supportsVideo属性设为YES,系统处理视频类VoIP通话接听时会自动触发应用唤起逻辑,用户验证密码后直接进入应用内通话页。

Flutter项目落地步骤:

  • 先在iOS原生层完成PushKit+CallKit基础配置,确保VoIP推送能正常唤起原生通话界面
  • 在CallKit的provider:performAnswerCallAction:代理方法中,主动触发Flutter引擎的路由跳转指令,预加载应用内通话页面
  • 若你的应用为纯语音通话,可临时标记通话为视频类型触发系统唤起逻辑,应用内实际展示语音界面即可,不会影响苹果审核。

注意需遵守iOS 13及以上的PushKit规则:收到VoIP推送后必须在规定时间内调用CallKit上报接口,否则会被系统限制推送权限,开发时需做好回调时序处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:06:04