iOS应用退出状态下react-native-firebase的setBackgroundMessageHandler不触发如何解决
解决方案
1. 确认iOS原生项目配置
- 打开Xcode中你的项目配置页,进入
Signing & Capabilities标签,添加Background Modes能力,勾选以下两个选项:- Remote notifications(远程通知)
- Background fetch(后台获取)
- 进入手机系统设置,确认你的应用已开启「通知」全权限,以及「通用-后台App刷新」权限。
2. 修正推送Payload配置
iOS静默推送必须符合固定格式要求,否则系统会拦截不触发后台回调:
{ "apns": { "payload": { "aps": { "content-available": 1, "priority": 5 } }, "headers": { "apns-priority": "5" } }, "data": { // 你的自定义数据字段 } }
注意:aps字段中不要添加
alert、sound、badge这类通知展示字段,priority必须设为5,设置为10的高优先级推送会被系统判定为前台弹窗通知,跳过后台回调触发逻辑。
3. 确认回调注册逻辑
你当前的注册逻辑位置是正确的,额外检查以下两点:
setBackgroundMessageHandler必须放在index.js文件的最顶层,所有组件初始化逻辑之前,不要包裹在任何异步函数、组件生命周期、条件判断逻辑中- 确认你的react-native-firebase版本≥14.0.0,低于该版本存在已知的iOS杀进程场景下后台回调不触发的bug
4. 正确调试方法
Xcode连接调试状态下手动杀掉应用会被系统判定为强制停止进程,不会触发后台唤醒逻辑,调试时请按以下步骤操作:
- 断开Xcode与测试设备的连接
- 手动打开应用一次,再上滑杀掉应用
- 发送测试推送,通过Mac的
Console.app搜索你的应用包名查看日志输出,不要依赖Xcode的调试控制台
内容的提问来源于stack exchange,提问作者Syed Waqas
相关产品推荐
相关产品推荐

