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
相关产品推荐
相关产品推荐

