You need to enable JavaScript to run this app. React Native Firebase Messaging启动数分钟后失效问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

React Native Firebase Messaging启动数分钟后失效问题咨询

问题原因
  1. 推送服务冲突
    你的项目同时集成了@react-native-firebase/messaging和react-native-push-notification两个推送相关库,从AndroidManifest配置可以看到react-native-push-notification注册了RNPushNotificationListenerService监听com.google.firebase.MESSAGING_EVENT事件,和@react-native-firebase/messaging的服务产生抢占。二者对FCM token的管理逻辑不一致,会触发token频繁刷新,后端存储的旧token失效,导致通知运行几分钟后就无法接收。
  2. iOS版本逻辑适配
    你使用的@react-native-firebase/messaging@12.x版本官方要求必须显式调用messaging().registerDeviceForRemoteMessages()完成APNs注册,才能正常获取device token,未调用时无法获取属于版本设计的正常表现。
  3. 缺少token刷新监听
    没有监听FCM的token更新事件,token刷新后没有同步到服务端,服务端始终用旧token发送通知,自然无法触达。
解决方案

Android端

  • 二选一切除冗余依赖:如果主要使用Firebase推送能力,直接卸载react-native-push-notification,同时删除AndroidManifest中所有和该库相关的配置项,包括对应的<meta-data>、<receiver>、<service>标签;如果需要保留该库的本地通知能力,删除其<service>标签下监听com.google.firebase.MESSAGING_EVENT的<intent-filter>配置,仅交由@react-native-firebase/messaging处理远程推送事件。
  • 清理项目构建缓存:修改配置后执行cd android && ./gradlew clean,再重新打包测试,避免旧配置残留。

iOS端

  • 按官方要求在申请完通知权限后,主动调用messaging().registerDeviceForRemoteMessages()方法完成注册,即可正常获取token。
  • 确认Xcode的Signing & Capabilities配置中已经添加Push Notifications能力,以及Background Modes下的Remote notifications选项。

通用处理

  • 全局注册messaging().onTokenRefresh()监听回调,每次token更新时,将新token同步上传至服务端替换旧记录,保证服务端存储的始终是有效token。
  • 应用每次冷启动时主动调用messaging().getToken()获取最新token,和本地缓存的token做对比,存在差异时同步更新到服务端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 00:24:04