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

iOS应用无法接收Firebase Cloud Functions触发的FCM推送通知怎么办

FCM iOS推送无法接收排查指南

一、云函数端排查

  • 首先查看云函数日志中sendToDevice返回的response对象内容:重点看success/failure计数,以及results数组中的错误码
    • 若错误为MismatchSenderId:说明APNs证书/密钥和Firebase项目不匹配
    • 若错误为InvalidRegistration:说明存储的FCM token无效,需检查token上传逻辑
  • 补充iOS专属推送配置,你当前的message结构缺少APNs必要字段,修改参考如下:
const message = {
  notification: {
    title: "Party!",
    body: "The party is " + eventName,
  },
  // 新增iOS专属配置
  apns: {
    payload: {
      aps: {
        sound: "default"
      }
    },
    headers: {
      "apns-priority": "10"
    }
  }
}
  • 建议弃用旧版sendToDevice方法,改用新版send方法,兼容性更强:
const message = {
  token: theFCM,
  notification: { /* 同上配置 */ },
  apns: { /* 同上配置 */ }
}
await admin.messaging().send(message);

二、iOS端排查

  • 必须使用真机测试,iOS模拟器不支持远程推送功能
  • 检查App通知权限:进入系统设置→对应App→通知,确认允许通知开关已打开,且提醒样式、声音等权限正常开启
  • 校验FCM token一致性:对比Xcode控制台打印的token,和Firestore中fcmTokens集合存储的token是否完全一致,确认是否存在用户ID匹配错误、token未正常上传的问题
  • 检查Xcode项目配置:
    • 进入Signing & Capabilities标签,确认已添加Push Notifications能力
    • 确认已添加Background Modes能力,并勾选Remote notifications选项
  • 若你在Info.plist中关闭了FirebaseAppDelegateProxyEnabled(禁用方法混写),需手动实现以下方法,将APNs device token传给FCM:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
  Messaging.messaging().apnsToken = deviceToken
}
  • 确认运行环境匹配:Xcode直接运行的是开发环境,需上传开发环境的APNs证书/密钥;TestFlight、App Store、AdHoc包为生产环境,需上传生产环境的APNs证书/密钥,二者不可混用

三、通用配置排查

  • 进入Firebase控制台→项目设置→Cloud Messaging标签,确认已正确上传APNs认证密钥(推荐)或APNs推送证书,证书未过期、配置的Team ID/Bundle ID与项目一致
  • 确认项目中使用的GoogleService-Info.plist是从对应Firebase项目下载,其中的BUNDLE_ID字段与App的Bundle ID完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:05