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

Firebase instance id: deprecation of getId() in 21.0.0

随着最近发布的 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,不应该再被使用了?或者有替代品吗?

Fcm 代币

弃用前

val fcmToken = FirebaseInstanceId.getInstance().getToken()

替换

val fcmToken = FirebaseMessaging.getInstance().getToken()

FirebaseInstanceId#getId

弃用前

val istanceId = FirebaseInstanceId.getInstance().getId()

替换

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

This method is deprecated

Use FirebaseInstallations.getId() instead.

val instanceId = FirebaseInstallation.getInstance().getId()

FirebaseInstanceId class 已弃用,要使用 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,官方文档是这样说的:

public Task getInstanceId () -> This method is deprecated. For an instance identifier, use FirebaseInstallations.getId() instead. For an FCM registration token, use FirebaseMessaging.getToken() instead.

试试这个

 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;
    }
  • FCM代币:

    使用firebase_messaging

    String? token = await FirebaseMessaging.instance.getToken();
    
  • 安装 ID:

    使用flutterfire_installations

    String id = await FirebaseInstallations.instance.getId();
    
  • 安装授权令牌:

    String token = await FirebaseInstallations.instance.getToken();