Firebase云消息传递:FCM令牌到期

时间:2019-02-25 16:09:55

标签: android firebase google-cloud-firestore firebase-cloud-messaging

我了解,如果发生以下情况之一,FCM令牌会自动更新。

-该应用删除实例ID -该应用程序已在新设备上还原 -用户卸载/重新安装应用程序 -用户清除应用数据。

以下内容可在应用程序端用于监视令牌更新。

  

监控令牌生成

     

无论何时生成新令牌,都会触发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服务器无法知道设备的新令牌(如果存在)。因此,当我向该设备发送通知/数据消息时,服务器无法将其发送至设备,因为它不知道将其发送至何处(因为没有有效的令牌)。如何确保在这种情况下可以通知设备?我不做客户代币生成。因此,它似乎不时刷新令牌。如何增加令牌的有效性?

1 个答案:

答案 0 :(得分:1)

发送消息时,您需要检查是否有错误,并注意错误代码,例如listed in the documentation。如果出现错误messaging/registration-token-not-registered,则应该停止使用令牌。