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

com.google.firebase.iid.FirebaseInstanceId已废弃,求FCM令牌获取替代方案

FCM令牌获取废弃方法替代方案

你之前使用的FirebaseInstanceId获取令牌的API从Firebase Android SDK 21.0.0版本开始正式废弃,官方统一将FCM令牌相关能力迁移到FirebaseMessaging类中实现,替代方案如下:

核心替换代码

FirebaseMessaging.getInstance().getToken()
    .addOnCompleteListener(new OnCompleteListener<String>() {
        @Override
        public void onComplete(@NonNull Task<String> task) {
            if (!task.isSuccessful()) {
                // 可自行添加令牌获取失败的处理逻辑
                return;
            }
            // 获取FCM令牌
            String token = task.getResult();
            if (mUser != null) {
                // 原有上传到Firebase实时数据库的逻辑保持不变
                databaseReference.child("Tokens").child(mUser.getUid()).setValue(token);
            }
        }
    });

额外补充说明

  • 除了主动获取令牌,你还需要在自定义的FirebaseMessagingService子类中重写onNewToken方法,监听令牌的主动更新,避免后续令牌变化后推送失效,示例逻辑如下:
@Override
public void onNewToken(@NonNull String token) {
    super.onNewToken(token);
    // 直接将新令牌同步上传到实时数据库即可
    if (mUser != null) {
        databaseReference.child("Tokens").child(mUser.getUid()).setValue(token);
    }
}
  • 原有导入com.google.firebase.iid.FirebaseInstanceId的语句可以直接删除,替换为导入com.google.firebase.messaging.FirebaseMessaging
  • 新API的异步处理逻辑和原有逻辑完全兼容,不需要额外调整线程调度或者回调处理规则

内容的提问来源于stack exchange,提问作者Bhaskar Jyoti Dutta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:06:01