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

React Native Android端Firebase Cloud Messaging推送接收异常求助

解决React Native FCM推送突然失效的问题

我之前踩过FCM推送突然挂掉的坑,先给你拆解下问题,顺便解答你关心的配额问题:

关于FCM配额限制的疑问

FCM确实有免费配额,但免费版的限制是每日最多100万条推送请求,而且是项目级别的上限。重点是:如果触发配额超限,Firebase会直接返回429 Too Many Requests的错误码,而不是你后端收到的200状态码。所以从你后端的日志来看,完全可以排除配额超限的问题,不用在这方面浪费时间。

核心排查方向(针对「后端返回200但设备收不到」的情况)

1. 设备Token是否失效

之前能收到推送,突然收不到,大概率是Token失效了——比如用户卸载重装APP、清除应用数据、设备系统更新,甚至切换网络环境都可能导致Token过期。

  • 你可以在Firebase控制台的「Cloud Messaging」→「测试消息」里,用onRegister回调输出的最新Token发送测试推送,如果还是收不到,说明这个Token已经无效了。
  • 一定要确保你的后端实时同步最新的Token,替换掉数据库里的旧Token,避免用失效的Token发送推送。

2. 设备端的系统限制

Android的厂商省电模式是推送杀手!比如小米、华为、OPPO的默认省电模式会强制停止后台应用,阻断FCM的推送通道:

  • 让用户把你的APP加入电池优化白名单,允许后台活动;
  • 检查APP的通知权限是否被关闭,确保「允许通知」「允许后台通知」都开启。

3. FCM配置是否被误修改

虽然你说已经完成了配置,但突然失效可能是配置文件被误改:

  • 检查google-service.json里的project_id、api_key、messagingSenderId是否和Firebase控制台的项目信息一致;
  • 检查AndroidManifest.xml里的FCM服务配置是否完整,比如:
<service
    android:name=".MyFirebaseMessagingService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT" />
    </intent-filter>
</service>

4. 推送Payload格式是否合规

FCM对Payload的格式要求很严格,即使后端返回200,格式错误也会导致推送无法到达设备:

  • 区分notification和data字段:notification字段由系统直接展示(APP在后台时),data字段需要你在onNotification回调里自行处理;
  • 正确的Payload示例:
{
  "to": "你的设备Token",
  "notification": {
    "title": "测试通知",
    "body": "这是一条测试消息"
  },
  "data": {
    "custom_key": "自定义数据"
  }
}

5. React Native推送库的兼容性问题

你使用的react-native-push-notification库可能存在版本兼容问题:

  • 检查库版本和你的React Native版本是否匹配,建议更新到最新稳定版;
  • 确保onNotification回调已经正确实现,否则即使收到推送也无法触发通知展示:
PushNotification.configure({
  onRegister: function(token) {
    console.log("TOKEN:", token);
    // 这里一定要把Token同步到后端!
  },
  onNotification: function(notification) {
    console.log("收到通知:", notification);
    // 处理通知逻辑,比如跳转页面
    notification.finish(PushNotificationIOS.FetchResult.NoData);
  },
  permissions: {
    alert: true,
    badge: true,
    sound: true
  },
  popInitialNotification: true,
  requestPermissions: true
});

最后一步:检查Firebase项目状态

登录Firebase控制台,检查你的项目是否有异常:

  • 查看「Cloud Messaging」→「事件报告」,有没有推送失败的统计数据;
  • 检查项目是否因为账单问题被暂停(免费版一般不会,但如果绑定了信用卡要确认)。

如果以上排查都没解决问题,可以在Firebase控制台提交支持请求,或者查看FCM官方的故障排查文档。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:57:48