基于Agora的Flutter音视频APP:应用终止时如何显示来电通知?
解决方案:应用终止后触发来电通知
要实现应用终止状态下的来电通知,核心是依赖平台级的推送唤醒机制,结合Agora的推送服务触发callkeep展示来电。以下分iOS和Android平台分别说明:
iOS 平台
iOS应用终止后,只有VoIP推送能直接唤醒进程并触发回调,普通推送无法做到。需要按以下步骤配置:
- 开启VoIP推送权限:在Xcode项目配置中开启
Background Modes,勾选Voice over IP;同时在Info.plist中添加UIBackgroundModes数组,包含voip项。 - 配置Agora VoIP推送证书:在Agora控制台上传iOS的VoIP推送证书(p12格式),确保Agora服务器发送RTM邀请时能触发VoIP推送。
- 处理VoIP推送回调:使用Flutter插件(如
flutter_voip_push_notification)监听VoIP推送事件。收到推送后,先初始化Agora RTM/RTC实例,再调用callkeep的displayIncomingCall方法展示来电通知。 - 发送RTM邀请时启用推送:调用Agora RTM的
sendLocalInvitation时,设置enablePush: true,并配置推送标题、内容等参数,确保推送能被设备接收。
Android 平台
Android应用终止后,需依赖高优先级的推送服务(FCM或国内厂商推送)唤醒进程:
- 集成FCM推送:使用
firebase_messaging插件集成FCM,配置后台消息处理回调(onBackgroundMessage)。确保推送消息设置为高优先级(priority: "high"),让系统优先唤醒App进程。 - 配置Agora FCM推送:在Agora控制台上传FCM的服务器密钥,让Agora发送RTM邀请时通过FCM推送通知到设备。
- 处理推送并唤起callkeep:在FCM的后台回调中解析推送内容(包含通话邀请信息),初始化Agora RTM/RTC,然后调用
callkeep展示来电。 - 适配国内厂商系统:针对小米、华为、OPPO等厂商,需在应用权限中开启自启动权限和后台弹出窗口权限,避免系统拦截推送或阻止App唤醒。
通用注意事项
- 确保Agora RTM邀请的推送配置正确:发送邀请时必须明确开启推送,否则Agora不会触发平台级推送。
- 测试验证:iOS需用苹果APNs测试工具或Agora推送测试功能验证VoIP推送;Android需测试不同厂商设备的推送唤醒效果,部分厂商可能需要手动将应用加入白名单。
内容的提问来源于stack exchange,提问作者Fasikaw
相关产品推荐
相关产品推荐

