如何解决Firebase实例ID:在21.0.0中弃用getId
随着FirebaseInstanceId和FirebaseCloudMessaging(21.0.0
)的最新发行版,Firebase已弃用iid
程序包,并且现已弃用getToken()
和getId()
方法。
根据Firebase release note,方法getToken()
已移至FirebaseMessaging
之前:
FirebaseInstanceId.getInstance().getToken()
之后:
FirebaseMessaging.getInstance().getToken()
哪个使用fcmToken
,但是要检索实例ID ,FirebaseMessaging或FirebaseInstanceId中都没有可用的方法。
所以,instance_id
是否被认为是无用的ID,应该不再使用?还是有替代品吗?
解决方法
不推荐使用FirebaseInstanceId类,要使用FirebaseMessagingClass获得令牌。可以使用以下代码生成令牌:
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
Log.w(TAG,"Fetching FCM registration token failed",task.getException());
return;
}
// Get new FCM registration token
String token = task.getResult();
// Log and toast
String msg = getString(R.string.msg_token_fmt,token);
Log.d(TAG,msg);
Toast.makeText(MainActivity.this,msg,Toast.LENGTH_SHORT).show();
}
});
关于Firebase InstanceId,这是官方文件说的:
,公共任务getInstanceId()-> 不建议使用此方法。 对于实例标识符,请改用FirebaseInstallations.getId()。对于FCM注册令牌,请改用FirebaseMessaging.getToken()。
检查FirebaseInstanceId#getId()
的代码,我发现建议您改用FirebaseInstallations#getId
。
不推荐使用此方法
改为使用
FirebaseInstallations.getId()
。
val instanceId = FirebaseInstallation.getInstance().getId()
,
试试这个
public String getToken() {
String token;
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (task.isSuccessful()) {
token = task.getResult();
}
}
});
return token;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。