android - 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);
}
});
解决方案
没有什么说该getToken()
方法会在您每次调用它时生成令牌。
来自文档:
在您的应用程序首次启动时,FCM SDK 会为客户端应用程序实例生成一个注册令牌。
但文档也清楚地说,令牌“可能会改变”有多种不同的场景:
- 应用删除实例 ID
- 该应用程序已在新设备上恢复
- 用户卸载/重新安装应用程序
- 用户清除应用数据。
getToken()
每次都为您提供当前令牌,而不是新令牌。
推荐阅读
- android - 如何在 Xamarin 中设置当前视图
- python-3.x - 数据框中父节点的总和值
- javascript - 在 js 中以编程方式测量页面加载
- c++ - 程序第一次运行完美,但第二次从二进制文件中读取类时想知道 seg 错误?
- c# - 将逗号分隔的字符串分组为范围组 2 维数组
- python - 如何将分钟添加到时间数据?
- r - 使用 dplyr 进行过滤、表格和排序?
- python - 如何为我的 NN 模型正确地塑造我的数据?
- tensorflow - Colab 最近更新导致错误:Tensor 对象仅在启用 Eager Execution 时才可迭代
- haskell - 在haskell中对我的数据子集进行模式匹配