我理解如果以下情况之一发生,FCM令牌会自动更新:
-应用程序删除实例ID
-应用程序在新设备上还原
-用户卸载/重新安装应用程序
-用户清除应用数据。
以下内容可用于应用程序端监视令牌更新。
监视令牌生成
每当生成新令牌时,onTokenRefresh回调函数被触发,因此在其上下文中调用getToken可以确保您访问的是当前可用的注册令牌。 确保已将服务添加到清单文件中,然后在onTokenRefresh的上下文中调用getToken并按如下所示记录其值:
@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服务器无法知道设备的新令牌(如果有)。因此,当我向该设备发送通知/数据消息时,服务器无法将其发送到设备,因为它不知道要发送到哪里(因为没有有效令牌)。我如何确保在这种情况下可以通知设备?我不进行自定义令牌生成。所以似乎现在和然后刷新令牌。我如何增加我的令牌的有效性?