Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android FCM每次在我的活动中都生成相同的令牌_Android_Firebase Cloud Messaging - Fatal编程技术网

Android FCM每次在我的活动中都生成相同的令牌

Android FCM每次在我的活动中都生成相同的令牌,android,firebase-cloud-messaging,Android,Firebase Cloud Messaging,实际上,在我的活动中,我有一个按钮,点击按钮我想生成FCM。。。我想当应用重新启动并且再次单击按钮时,FCM应该每次生成不同的令牌,但每次都生成相同的令牌 FirebaseInstanceId .getInstance() .getInstanceId() .addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() { @Override

实际上,在我的活动中,我有一个按钮,点击按钮我想生成
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);
            }
        });
FirebaseInstanceId
.getInstance()
.getInstanceId()
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(InstancedResult InstancedResult){
String token=instanceIdResult.getToken();//这里每次都生成相同的令牌
System.out.println(“令牌SSS”+令牌);
SharedReferences SharedReferences=SignupActivity.this.getSharedReferences(cmn.SHARED\u SPNAME,MODE\u PRIVATE);
SharedReferences.Editor SharedReferences=SharedReferences.edit();
sharedPreferencesE.putString(cmn.RegistrationTokenforFirebase,token);
sharedpreferences.apply();
tokenZ=新令牌();
SharedReferences SharedReferencez=SignupActivity.this.getSharedReferences(cmn.SHARED\u SPNAME,MODE\u PRIVATE);
String tokens=sharedPreferenceZ.getString(cmn.RegistrationTokenforFirebase,“1”);
DatabaseReference database=FirebaseDatabase.getInstance().getReference().child(“+Number”);
//DatabaseReference myRef=database.getReference(“+Number”);
tokenZ.setToken(令牌);
database.setValue(tokenZ);
}
});

没有任何东西表明
getToken()
方法将在每次调用它时生成令牌


发件人:

在应用程序初始启动时,FCM SDK会为客户端应用程序实例生成注册令牌

但也要明确指出,在多种不同的情况下,标记“可能会改变”:

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

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

Firebase令牌是在每次安装的基础上生成的,这意味着获得新令牌的唯一方法是卸载并重新安装您的应用程序。没有任何可能的方法来更新令牌?请参阅此答案