Flutter ConnectyCube iOS端无法接收呼叫通知问题求助
iOS端无法接收ConnectyCube呼叫通知的排查方案
一、VOIP推送核心配置检查
ConnectyCube的iOS呼叫通知依赖VOIP推送(而非普通FCM推送),先确认以下关键配置:
- 打开Xcode项目的
Signing & Capabilities,确保已添加Voice over IP能力,系统会自动生成对应的voip权限entitlement文件,不要手动修改。 - 检查
Info.plist中是否包含UIBackgroundModes数组,且同时包含voip和remote-notification两个元素,缺失的话后台无法监听VOIP推送。 - 验证ConnectyCube平台上传的APNs证书类型:必须是VOIP专用证书,而非普通推送证书,上传时要在ConnectyCube后台选择正确的证书分类。
二、SDK侧VOIP注册逻辑校验
核对你的CallManager或FcmSetup类,确保VOIP Token正确绑定到ConnectyCube账号:
- 获取VOIP Token后,必须调用SDK的注册接口上传Token,示例代码:
final voipToken = await FlutterCallkitIncoming.getVoIPToken(); if (voipToken != null) { await CubePushNotifications.registerVoipPushToken(voipToken); }
- 注册时机必须在用户成功登录ConnectyCube之后,否则Token无法与当前用户账号关联,平台无法定向推送。
三、FCM与APNs联动配置确认
- 登录Firebase控制台,检查iOS应用的APNs认证配置:已上传有效的APNs Auth Key(或证书),且启用了
Push Notifications和Voice over IP的推送权限。 - 进入ConnectyCube后台的
Push Notifications设置页,确认已勾选VOIP Push选项,且关联的FCM项目与当前应用一致。
四、前台通知处理逻辑补全
iOS前台默认不会自动弹出系统通知,需要手动处理推送回调:
- 实现ConnectyCube的推送监听,收到呼叫通知时主动触发CallKit弹窗或本地通知,示例:
CubePushNotifications.onPushReceive.listen((pushMessage) { if (pushMessage.isCallNotification) { // 调用CallKit展示呼叫界面 await FlutterCallkitIncoming.showCallkitIncoming(_buildCallData(pushMessage)); } });
- 确认已请求用户的通知权限(包括VOIP权限),可以在应用启动时调用权限请求代码:
await FlutterCallkitIncoming.requestPermissions();
五、日志与测试技巧
- 在ConnectyCube后台的
Push Notifications页面,手动发送测试VOIP推送,查看平台返回的推送状态,若失败可直接获取错误原因(如Token无效、证书不匹配)。 - 用Xcode连接真机,控制台过滤
voip或apns关键词,查看是否有推送接收的日志,确认APNs是否将推送给到设备,以及SDK是否正确处理。 - 必须使用iOS真机测试,模拟器不支持VOIP推送功能。
内容的提问来源于stack exchange,提问作者yash gupta
相关产品推荐
相关产品推荐

