FCM在我的活动中每次都生成相同的令牌 [英] FCM is generating the same token everytime in my activity

查看:72
本文介绍了FCM在我的活动中每次都生成相同的令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

In my activity actually I have a button and on button click i want to generate FCM ... I want when app is restart and when button is clicked again FCM should generate different token everytime but it is generating same token everytime

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);
            }
        });

推荐答案

什么也没有说,每次调用getToken()方法都会生成令牌.

Nothing says that getToken() method will generate token every time you call it.

来自文档:

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

On initial startup of your app, the FCM SDK generates a registration token for the client app instance.

文档明确表示令牌"可能可能发生更改"的多种不同情况:

but also docs clearly say that there are multiple different scenarios in which the token "may change":

  • 该应用程序删除实例ID
  • 该应用已在新设备上还原
  • 用户卸载/重新安装应用程序
  • 用户清除应用数据.
  • The app deletes Instance ID
  • The app is restored on a new device
  • The user uninstalls/reinstall the app
  • The user clears app data.

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

getToken() gives you the current token, not new token every single time.

这篇关于FCM在我的活动中每次都生成相同的令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆