如何检查这种情况,然后在刷新令牌时发送到服务器?
应用程序删除实例ID
应用已在新设备上还原
用户卸载/重新安装应用程序
用户清除应用数据
这是我发送服务器的代码。但是,它在应用程序登录时是否始终发送?出现上述情况时如何发送?
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.e("NEW_TOKEN", s);
sendRegistrationToServer(s);
}
private void sendRegistrationToServer(String token) {
APIInterface apiInterface = APIClient.getClient().create(APIInterface.class);
Call<Fcm> call = apiInterface.postFCMToken(user_id, newToken);
call.enqueue(new Callback<Fcm>() {
@Override
public void onResponse(Call<Fcm> call, Response<Fcm> response) {
}
@Override
public void onFailure(Call<Fcm> call, Throwable t) {
}
});
}
答案 0 :(得分:1)
通常,您应该期望应用程序安装无法可靠地检测FCM令牌何时更改。因此,任何新令牌都应无条件报告给后端,作为给定用户进行消息传递的潜在目标。
您的应用程序的服务器端可以在尝试向无效的令牌发送消息时查看错误响应,从而删除无效的令牌。如果您使用的是send a message to a device token的Admin SDK,则可以检测到令牌无效,因为API会生成错误 messaging / registration-token-not-registered ,{{ 3}}。