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

Angular+Ionic安卓App遇FCM注册令牌无效问题求助

FCM推送通知异常排查方案

基于Angular + Ionic的安卓App,此前Firebase推送通知运行正常,近期修改DB服务(与通知功能无关)后出现部分通知发送失败:

  • 部分场景下,通知未注册到触发云函数的Realtime DB
  • 部分场景下,令牌已写入DB并触发云函数,但云函数报错:

Error: The registration token is not a valid FCM registration token

已确认注册时获取的令牌与云函数日志中令牌完全一致,且通知在注册完成数秒后推送,以下是具体排查方向:

核心排查点

  • 令牌有效性校验
    1. 核对项目一致性:确认云函数使用的Firebase项目配置,与App端google-services.json是否匹配,避免跨项目使用令牌
    2. 直接验证令牌:调用FCM的验证接口(POST https://fcm.googleapis.com/fcm/send,请求体添加"validate_only": true),传入令牌确认是否真的无效,排除日志显示误差
  • Realtime DB注册逻辑
    1. 检查写入时机:确认onFCMTokenChanged的订阅者是否在令牌完全写入DB后才触发通知逻辑,避免异步写入未完成就触发云函数
    2. 排查写入失败:查看App端DB写入日志,确认是否存在权限不足、网络波动导致的写入失败;检查tokenProcessed标记逻辑,是否存在多事件触发时漏处理或重复处理的情况
  • 云函数执行逻辑
    1. 令牌完整性检查:在云函数中添加日志,输出令牌的长度、原始字符串(避免日志格式化时的截断/转义问题)
    2. 依赖版本检查:更新firebase-admin到最新稳定版,排除依赖版本不兼容导致的令牌校验异常
  • App端FCM初始化
    1. 启动流程影响:检查DB服务修改是否改变了App启动顺序、依赖注入逻辑,导致FCM初始化延迟或失败;查看启动日志,确认PushNotifications.addListener是否在正确时机注册
    2. 网络环境测试:切换设备网络(如从WiFi切到4G),排除企业代理、网络限制导致令牌无法同步到Firebase服务器的问题

相关代码与日志

注册代码

PushNotifications.addListener("registration", (token: Token) => {      
      if (token && !this.tokenProcessed) {
        this.tokenProcessed = true;
        console.log('My token: ' + JSON.stringify(token));
        this.onFCMTokenChanged.next(token.value);
      }
    });

控制台日志

My token: {"value":"D8636BCC62A673B4D574736AFCA1F73AF7C34EBBB7D99A38E05CDB6963FEAE8B"}

GCS日志内容

云函数触发通知请求时,日志显示目标令牌为D8636BCC62A673B4D574736AFCA1F73AF7C34EBBB7D99A38E05CDB6963FEAE8B,随后抛出The registration token is not a valid FCM registration token错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:13:16