Nic*_*ick 5 firebase firebase-cloud-messaging
我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"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
似乎正在发生的事情是令牌即将到期。onTokenRefresh()在许多场合都引用了该函数,但是很少有关于如何实现的文档,当然也没有关于如何测试的文档。一些用户报告说清除缓存将强制刷新令牌。对我来说不是这样。
我已经有近6个月的时间遇到此问题,并定期检查以查看文档是否有所改进,但是尚无明确的解决方案。
任何测试的解决方案将不胜感激。我确信还有其他人在使用未记录的WebPush类似问题的通知。
onTokenRefresh()(现已弃用。使用onNewToken(String s)实现FirebaseMessagingService,请查看另一个答案FirebaseInstanceIdService 已弃用)每次安装的应用程序获取新令牌时都会调用,无论其原因是什么(例如,如果用户转到“应用程序”android配置菜单选项,选择您的应用程序并按“清除数据”,但这只是原因之一)。
您必须使用此方法来调用您的后端并更新您存储先前令牌的位置,以便您的后端不再使用它向它发送任何消息,因为它已经过期(从而抛出 /NOT_FOUND错误UNREGISTERED) 。
AndroidManifest.xml不要忘记按照文档中的说明添加以下内容:
在清单中包含以下内容:
Run Code Online (Sandbox Code Playgroud)<service android:name=".YourFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter>
新的文档FirebaseMessagingService:
| 归档时间: |
|
| 查看次数: |
1946 次 |
| 最近记录: |