我在项目中使用WebPush
,并且在大多数情况下效果很好。但是,有时-通常在长时间的使用后-用户会收到以下JSON响应的404错误:
{
"error": {
"code": 404,
"message": "Requested entity was not found.",
"status": "NOT_FOUND",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "UNREGISTERED"
}
]
}
}
似乎正在发生的事是令牌即将到期。函数onTokenRefresh()
在很多场合都被引用,但是很少有关于如何实现的文档,当然也没有关于如何测试的文档。一些用户报告说清除缓存将强制刷新令牌。对我来说不是这种情况。
这个问题我已经有将近6个月了,并定期检查以查看文档是否有所改进,但是没有明确的解决方案。
任何测试的解决方案将不胜感激。我确信还有其他人在使用文档不足的WebPush
通知,并且存在类似问题。
答案 0 :(得分:0)
onTokenRefresh()
(现已弃用。使用onNewToken(String s)
实现FirebaseMessagingService
,检查其他答案FirebaseInstanceIdService is deprecated)是在每次安装的应用程序获得新令牌时调用的,无论原因(例如,如果用户转到“应用程序” android配置菜单选项,选择您的应用程序并按“清除数据”,但这只是原因之一)。
您必须使用此方法来调用后端并更新存储先前令牌的位置,以使后端不再使用该令牌,因为它已过期就不再向其发送任何消息(从而抛出该令牌)。 NOT_FOUND
/ UNREGISTERED
错误)。
请不要忘记按照文档中的说明在AndroidManifest.xml
中添加以下内容:
在清单中包括以下内容:
<service android:name=".YourFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter>
新FirebaseMessagingService
的文档: