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

iOS端FCM推送通知问题:无效注册令牌报错排查

解决FCM iOS端「无效注册令牌」问题的技术方案

问题回顾

Android端FCM推送功能正常,但iOS端发送推送时返回messaging/invalid-registration-token错误,已确认Firebase控制台的Key ID、Team ID及证书配置正确,当前使用的iOS FCM令牌为FAE728F3A519B6688733E9AEE3DFE3266CA2F88683C49BC5E85F24984DF2BF1C。

排查与解决步骤

  • 验证令牌格式与有效性
    你提供的令牌为64位全大写十六进制字符串,不符合FCM iOS令牌的标准特征:

    • 标准FCM iOS令牌长度约152字符,包含大小写字母、数字及/、=等特殊字符
    • 令牌不应被手动转成大写,需保持客户端获取的原始格式
      该令牌大概率是APNs设备令牌而非FCM令牌,或被截断、篡改过,需从客户端重新获取正确的FCM令牌。
  • 确认客户端令牌获取流程
    确保iOS客户端正确调用Firebase Messaging的令牌获取接口:

    • 使用messaging().token(completion:)(Swift)或对应Objective-C方法获取FCM令牌,而非直接使用APNs设备令牌
    • 客户端需先完成Firebase初始化,并获取用户授权的推送通知权限(alert、sound、badge)
      在客户端打印令牌日志,与服务端使用的令牌完全对比,确保无字符差异。
  • 环境一致性检查

    • 确认iOS客户端的GoogleService-Info.plist中PROJECT_ID与服务端使用的Firebase项目完全一致
    • 若为开发环境测试,确保客户端获取的是开发环境令牌;生产环境则对应生产环境令牌,FCM会根据令牌自动适配环境,但错误环境的令牌会被判定无效。
  • 处理令牌失效场景
    当iOS设备重装APP、恢复出厂设置或APP卸载重装时,原FCM令牌会失效,需客户端监听令牌更新事件(messaging(tokenRefresh:)),并将新令牌同步到服务端。

  • 优化服务端发送代码

    • 确保sendToDevice的第一个参数为令牌数组(单个令牌可传[fcmToken]),避免格式错误
    • 将payload中的badge字段改为数字类型(原代码中是字符串"1"),修改后代码:
      const payload = {
        notification: {
          title:  `John just joined`,
          body: `Your friend John is now on your app`,
          sound: 'default',
          badge: 1 // 改为数字类型
        },
      };
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:48:42