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

Firebase Cloud Messaging:注册令牌为何会被删除?

Firebase Cloud Messaging:Registration Token被注销的常见场景

我之前也碰到过一模一样的问题,结合官方文档和实际踩坑的经验,整理了Firebase会注销registration token的几种核心场景,帮你定位问题:

  • 用户卸载应用:这是最常见的触发原因。当用户卸载你的App后,设备上的FCM SDK会自动向Firebase发送注销请求,对应的token会被直接标记为无效,后续再用这个token订阅主题或者推送消息,就会返回你遇到的那个错误。
  • 应用清除数据/重新安装:如果用户手动清除了App的本地存储数据,或者卸载后重新安装,哪怕是同一设备同一用户,新生成的token也会和旧的不一样,旧token会被Firebase直接注销。
  • 设备环境发生重大变化:比如设备进行系统大版本更新、恢复出厂设置,或者Android设备更换了绑定的Google账号,这些场景都会导致原token的设备上下文失效,Firebase会自动注销该token。
  • 长时间未与FCM服务器通信:如果你的App长时间处于后台未活跃,或者设备长时间离线,FCM服务器会判定该token对应的设备不再活跃,经过一段不活跃周期(没有公开固定时长,一般是几周级别)后,就会注销这个token。
  • 主动调用注销API:如果你的代码里调用了FirebaseMessaging.getInstance().deleteToken()(Android)或者Messaging.messaging().deleteToken()(iOS/Web)这类主动注销token的方法,Firebase会立即标记该token为无效状态。
  • 平台特定的推送权限/服务异常:比如iOS上,如果用户关闭了App的推送权限,或者Apple的APNs返回了token无效的错误,Firebase会同步注销对应的FCM token;Android上如果Google Play服务被禁用、出现异常,也可能导致token失效被注销。

另外给你个小建议:碰到这类错误时,一定要在收到错误响应后,立刻从你的SQL数据库中删除对应的无效token,避免后续重复调用浪费资源。同时建议在App每次启动时重新获取一次token,和数据库中存储的token做对比,如果不一致就更新数据库并重新订阅主题,这样能大幅减少无效token的存在。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:05:21