【发布时间】:2019-07-19 02:26:18
【问题描述】:
我了解,如果发生以下任一情况,FCM 令牌会自行更新。
-应用删除Instance ID
- 应用程序在新设备上恢复
- 用户卸载/重新安装应用程序
- 用户清除应用数据。
App端可以使用以下方式监控Token更新。
监控令牌生成
每当生成新令牌时都会触发 onTokenRefreshcallback,因此 在其上下文中调用 getToken 可确保您正在访问一个 当前可用的注册令牌。确保您已添加 服务到您的清单,然后在上下文中调用 getToken onTokenRefresh,并记录如下所示的值:
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
// If you want to send messages to this application instance or
// manage this apps subscriptions on the server side, send the
// Instance ID token to your app server.
sendRegistrationToServer(refreshedToken);
}
我的问题是,当应用程序终止时,令牌过期并且 FCM 服务器无法知道设备的新令牌是什么(如果存在)。因此,当我向此设备发送通知/数据消息时,服务器无法将其发送到设备,因为它不知道将其发送到哪里(因为没有有效的令牌)。如何确保在这种情况下我可以通知设备?我不进行客户令牌生成。所以它似乎不时刷新令牌。如何提高我的令牌的有效性?
【问题讨论】:
标签: android firebase google-cloud-firestore firebase-cloud-messaging