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

React Native Expo推送通知服务选型及故障求助:Expo Push vs FCM

Expo Push Notifications vs FCM:问题排查与选型建议

一、解决你遇到的两个服务问题

1. Expo Push Notifications(Test Flight收不到通知)

  • 确认生产环境APNs证书配置:Test Flight属于苹果生产环境,必须在Expo控制台上传生产版APNs证书,不能用开发证书。证书生成时要绑定正确的Bundle ID,导出为p12格式后完成上传。
  • 校验设备令牌环境:Expo在开发、生产模式下生成的令牌不同,Test Flight中的应用获取的是生产令牌,要确保服务器发送推送时使用的是这批生产令牌,而非开发阶段的令牌。
  • 检查API调用正确性:生产环境推送请求地址为https://exp.host/--/api/v2/push/send,请求头需携带Expo-Project-Id: 你的项目ID,payload的to字段对应生产令牌,同时确保sound、body等字段符合Expo推送规范。

2. Firebase Cloud Messaging(模拟器收不到通知)

  • 模拟器限制:iOS模拟器不支持FCM推送,必须使用真实iOS设备测试;Android模拟器需选择带Google APIs的系统镜像,且确保Google Play服务已正常安装并更新。
  • 验证令牌有效性:检查获取的FCM令牌是否为当前设备的有效令牌,应用卸载重装、系统版本更新、设备重置等操作都会导致令牌失效,需重新获取。
  • 核对请求格式与密钥:用Node服务器调用FCM API时,请求头需设置Authorization: key=你的服务器密钥,payload结构需符合平台要求:
    • Android:需包含notification(前台通知)或data(后台数据)字段;
    • iOS:需将aps字段嵌套在notification中,示例结构:
      {
        "to": "设备令牌",
        "notification": {
          "title": "测试通知",
          "body": "这是一条FCM测试通知",
          "aps": {
            "alert": {
              "title": "测试通知",
              "body": "这是一条FCM测试通知"
            }
          }
        }
      }
      

二、选型建议

  • 纯Expo项目(未eject):优先选Expo Push Notifications,它封装了APNs和FCM的底层逻辑,无需分别配置两个平台的推送服务,批量推送只需调用Expo统一的推送API,传入令牌数组即可,减少跨平台配置成本。
  • 已eject/原生混合项目:选FCM更合适,FCM支持更灵活的原生端定制,比如自定义通知样式、后台数据处理,批量推送可通过主题订阅、令牌列表批量发送实现,原生端配置可控性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:05:04