刷新令牌时如何发送到服务器?
Posted
技术标签:
【中文标题】刷新令牌时如何发送到服务器?【英文标题】:How to send to server when refresh token? 【发布时间】:2018-12-20 06:15:02 【问题描述】:刷新令牌时如何检查这个条件然后发送到服务器?
App 删除实例 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)
);
【问题讨论】:
onNewToken()
只被调用一次。当前的代码很好,IMO。那不应该一次又一次地向服务器发送令牌。
@Shashanth 刷新令牌时如何再次发送?
令牌刷新时onNewToken()
将在内部触发。如果您想手动获取当前令牌,请使用 Firebase 的 Github 项目中的 this 代码。
【参考方案1】:
通常,您应该预期应用安装无法可靠地检测到 FCM 令牌何时发生更改。因此,任何新令牌都应无条件地报告给后端,作为给定用户消息传递的潜在目标。
在尝试向不再有效的令牌发送消息时,您的应用的服务器端可以通过查看错误响应来移除无效令牌。如果您将 Admin SDK 用于send a message to a device token,那么您可以检测到令牌何时无效,因为 API 将生成错误 messaging/registration-token-not-registered,according to the documentation。
【讨论】:
以上是关于刷新令牌时如何发送到服务器?的主要内容,如果未能解决你的问题,请参考以下文章