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

已更新Token仍部分用户出现FCM 404 'UNREGISTERED'错误排查

FCM推送报UNREGISTERED(404)错误的根因分析

以下是针对你遇到的部分用户推送失败问题的具体根因分析:

  • Token已被FCM主动标记无效,但本地未触发更新
    即便你实现了Token不一致时的更新逻辑,以下场景会导致FCM将Token标记为无效,而本地未同步新Token:

    • 用户卸载重装应用后未打开:旧Token会被FCM注销,但新Token需用户打开应用才会生成并同步到数据库,此时数据库中仍存旧的无效Token
    • 用户清除应用数据:本地Token丢失,若用户未重新启动应用,数据库无法获取新Token
    • FCM服务端主动注销Token:比如同一设备的应用实例被替换、或因安全策略注销Token,此时应用未触发Token刷新逻辑,数据库仍保留旧Token
  • Token更新逻辑存在遗漏场景
    你的更新逻辑仅覆盖「数据库Token与应用实例Token不一致」的情况,但可能漏掉这些场景:

    • 未正确监听onNewToken回调:应用在后台收到FCM的Token刷新通知时,若未处理该回调,新Token无法同步到数据库
    • Token获取存在延迟:部分设备上,FirebaseMessaging.getInstance().getToken()启动时返回旧Token,后续获取到新Token后未执行同步操作
    • 多设备登录未清理旧Token:用户在新设备登录生成新Token后,数据库仅更新为最新Token,但旧设备的无效Token未被移除,推送时仍会被调用
  • 数据库存在冗余无效Token未清理
    你的逻辑仅做Token更新,未处理无效Token的清理:

    • 用户更换设备后,旧设备的Token仍留存于数据库,这些Token已被FCM标记为无效
    • Token过期或被FCM回收后,系统无对应清理机制,导致无效Token持续存在并被用于推送
  • validate_only验证结果的指向性
    使用"validate_only": true验证仍报错,说明这些Token确实已被FCM标记为UNREGISTERED,问题核心在于你的Token生命周期管理存在漏洞,而非验证机制问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:22:46