首页 > 解决方案 > FCM 在我的活动中每次都生成相同的令牌

问题描述

在我的活动中,实际上我有一个按钮,并且在单击按钮时我想生成FCM...我希望在重新启动应用程序以及再次单击按钮时FCM应该每次生成不同的令牌,但每次都会生成相同的令牌

FirebaseInstanceId
        .getInstance()
        .getInstanceId()
        .addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
            @Override
            public void onSuccess(InstanceIdResult instanceIdResult) {
                String token = instanceIdResult.getToken();// here same token is generating everytime
                System.out.println("Tokensss " + token);
                SharedPreferences sharedPreferences = SignupActivity.this.getSharedPreferences(cmn.SHARED_SPNAME, MODE_PRIVATE);
                SharedPreferences.Editor sharedPreferencesE = sharedPreferences.edit();
                sharedPreferencesE.putString(cmn.RegistrationTokenforFirebase, token);
                sharedPreferencesE.apply();
                tokenZ = new Token();
                SharedPreferences sharedPreferenceZ = SignupActivity.this.getSharedPreferences(cmn.SHARED_SPNAME, MODE_PRIVATE);
                String tokens = sharedPreferenceZ.getString(cmn.RegistrationTokenforFirebase, "1");
                DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("" + Number);
                //  DatabaseReference myRef = database.getReference(""+Number);
                tokenZ.setToken(tokens);
                database.setValue(tokenZ);
            }
        });

标签: androidfirebase-cloud-messaging

解决方案


没有什么说该getToken()方法会在您每次调用它时生成令牌。


来自文档

在您的应用程序首次启动时,FCM SDK 会为客户端应用程序实例生成一个注册令牌。

文档也清楚地说,令牌“可能会改变”有多种不同的场景:

  • 应用删除实例 ID
  • 该应用程序已在新设备上恢复
  • 用户卸载/重新安装应用程序
  • 用户清除应用数据。

getToken()每次都为您提供当前令牌,而不是新令牌。


推荐阅读