firebase - FCM 404“未找到请求的实体”错误代码:“未注册”
问题描述
我WebPush
在我的项目中使用它,它在大多数情况下运行良好。但是,偶尔(通常在长时间使用后)用户会收到 404 错误,并带有以下 JSON 响应:
{
"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
类似问题的文档不足的通知。
解决方案
onTokenRefresh()
(现在已弃用。使用onNewToken(String s)
implementation 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
:
推荐阅读
- java - 无法初始化类 org.codehaus.groovy.reflection.ReflectionCache
- asp.net - ASP.NET Core 运行时 3.1.9
- c# - C# 在控制台应用程序上异步并行下载多个文件时遇到问题
- node.js - Node.js - node-rsa - 加密期间出错。原始错误:错误:错误:0306E06C:bignumroutines:BN_mod_inverse:no inverse
- vue.js - 通天塔 - VueJS | 模块构建失败:错误:插件/预设文件不允许导出对象,只能导出函数。在
- java - 在Java和python实现中将数组转换为字符串
- kotlin - 以通用方式向函数添加副作用
- java - 如何在 Eclipse 中将文件夹标记为测试文件夹?
- spring-kafka - 如何在spring boot webservice中的API调用后从启动开始寻求kafka记录
- perl - DateTime -> set_time_zone(...) 使用世界时区字符串,用于丢失的城镇