Firebase 实例 ID:在 21.0.0 中弃用 getId()

Mah*_*alv 10 android firebase firebase-cloud-messaging

随着 FirebaseInstanceId 和 FirebaseCloudMessaging ( 21.0.0)最近发布,Firebase已弃用iid包,现在不推荐使用getToken()getId()方法。

根据Firebase 发行说明,该方法getToken()已移至FirebaseMessaging

前:

FirebaseInstanceId.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)

后:

FirebaseMessaging.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)

这提供了使用fcmToken,但要检索实例 id,FirebaseMessaging 和 FirebaseInstanceId 中没有可用的方法。


那么,是否instance_id被认为是无用的 id,不应再使用?或者有替代品吗?

小智 30

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();
    }
});
Run Code Online (Sandbox Code Playgroud)

关于Firebase InstanceId,官方文档是这样说的:

public Task getInstanceId () -> 此方法已弃用。对于实例标识符,请改用 FirebaseInstallations.getId()。对于 FCM 注册令牌,请改用 FirebaseMessaging.getToken()。


Mah*_*alv 5

FCM令牌

弃用前

val fcmToken = FirebaseInstanceId.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)

替代品

val fcmToken = FirebaseMessaging.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)

FirebaseInstanceId#getId

弃用前

val istanceId = FirebaseInstanceId.getInstance().getId()
Run Code Online (Sandbox Code Playgroud)

替代品

查看FirebaseInstanceId#getId()我的代码,看到了您应该改用的建议FirebaseInstallations#getId

此方法已弃用

使用FirebaseInstallations.getId()来代替。

val instanceId = FirebaseInstallation.getInstance().getId()
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这可能不会返回相同的结果。FirebaseInstallation instanceId 不是用于 FCM 的实例 (2认同)