我在我的Android应用中使用FCM进行推送通知。我有以下类来获取fcm标记。
public class MyFirebaseInstanceIdService extends FirebaseInstanceIdService {
@Override
public void onTokenRefresh() {
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
}
}
安装我的应用程序并且我能够获取令牌时,这是正确调用的。但是我不确定我的应用程序是否已更新(从Play商店),然后将调用此方法。文档只是说只要令牌发生变化就会调用该方法。但更新应用程序可能不会更改令牌。
答案 0 :(得分:14)
正如评论部分中@Dharmitabhatt在post中所指出的,当应用更新时,注册令牌不会被引用。
每当在Android中刷新令牌时,都应该调用onTokenRefresh()方法:
系统确定需要刷新令牌时调用。应用程序应调用getToken()并将令牌发送到所有应用程序服务器。
这不会经常调用,需要进行密钥轮换并处理由于以下原因引起的实例ID更改:
- 应用删除实例ID
- 应用程序已在新设备上恢复
- 用户卸载/重新安装应用
- 用户清除应用数据
系统将限制所有设备上的刷新事件,以避免使用令牌更新使应用程序服务器过载。
因此,您说更新应用程序并不一定会刷新令牌是正确的。
答案 1 :(得分:3)
注册令牌可能会在以下情况下发生变化:
该应用会删除实例ID
该应用已在新设备上恢复
用户卸载/重新安装应用
用户清除应用数据。
您可以从中找到更多信息 http://prntscr.com/dnzq9l
https://firebase.google.com/docs/cloud-messaging/android/client
答案 2 :(得分:0)