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

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连接调试状态下手动杀掉应用会被系统判定为强制停止进程,不会触发后台唤醒逻辑,调试时请按以下步骤操作:

  1. 断开Xcode与测试设备的连接
  2. 手动打开应用一次,再上滑杀掉应用
  3. 发送测试推送,通过Mac的Console.app搜索你的应用包名查看日志输出,不要依赖Xcode的调试控制台

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:54:01