在FCM HTTP v1 API中检测无效设备令牌的方法



我们使用FCM HTTP v1 API发送推送通知。

当我们的用户注册他们的设备令牌时,我们的推送服务器只将其存储到数据库中,而不进行验证,因为FCM不提供令牌验证API。

推送服务器唯一能检测到设备令牌是否有效的时间是通过FCM发送推送通知时。

根据FCM注册令牌管理,如果设备令牌无效,FCM服务器将以UNREGISTED或invalid_ARGUMENT进行响应。

但是,当使用无效有效负载时,也可以返回INVALID_ARGUMENT代码。因此,我们无法区分无效设备令牌和无效负载之间的错误。

以下是FCM服务器在分别使用无效设备令牌和无效有效载荷的情况下的实际响应。

{
"error": {
"code": 400,
"message": "The registration token is not a valid FCM registration token",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.firebase.fcm.v1.FcmError",
"errorCode": "INVALID_ARGUMENT"
}
]
}
}
HTTP/1.1 400 Bad Request
{
"error": {
"code": 400,
"message": "Invalid JSON payload received. Unknown name "priority" at 'message': Cannot find field.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.BadRequest",
"fieldViolations": [
{
"field": "message",
"description": "Invalid JSON payload received. Unknown name "priority" at 'message': Cannot find field."
}
]
}
]
}
}

当令牌具有正确的格式但其用户不再活动时,您将收到一个UNREGISTED响应,指示您应该从后端删除该令牌。

但是,如果您发送的令牌没有有效格式(例如,它在后端被修改或截断(,您将收到INVALID_ARGUMENT。如果是这种情况,您可能需要检查您的代码,因为您可能正在某处(应用程序或后端(修改令牌。您可能需要手动检测并删除这些令牌。

一旦解决了这个问题,您就不必再担心INVALID_ARGUMENT响应来删除令牌,除非您进行了进一步的更改,再次损坏了令牌。

您必须查找Bad Request(400(或Not Found(404(状态代码,并删除/刷新fcm令牌。

阅读fcm文档的这一部分:检测无效令牌响应。。。

相关内容

  • 没有找到相关文章

最新更新