FCM 消息始终以 503 响应

Posted

技术标签:

【中文标题】FCM 消息始终以 503 响应【英文标题】:FCM messaging responding with 503 consistently 【发布时间】:2018-09-04 14:49:42 【问题描述】:

我最近实现了 FCM 消息传递,作为向基于 Cordova 的应用程序执行推送通知的一种方式。我的系统每天向个人用户发送 100-1000 条推送通知。

我正在使用 FcmSharp 库联系 FCM 消息服务。 https://github.com/bytefish/FcmSharp 据我所知正在使用 FCM HTTP v1 API。

$"https://fcm.googleapis.com/v1/projects/settings.Project/messages:send"

到目前为止,它似乎运行良好。然而,我不断收到从向 FCM 发送消息的服务记录的错误,表明出现故障。

"error": 
    "code": 503,
    "message": "The service is currently unavailable.",
    "errors": [
      
        "message": "The service is currently unavailable.",
        "domain": "global",
        "reason": "backendError"
      
    ],
    "status": "UNAVAILABLE"
  

我发送(发送给 FCMSharp)的消息的格式似乎也正确:

message: 
   "validate_only":false,
   "message":
    "data":null,
    "notification":
        "title":"[MyTitle]",
        "body":"[MyBody]"
    ,
    "android":
        "collapse_key":null,
        "priority":"HIGH",
        "ttl":"0s",
        "restricted_package_name":null,
        "data":null,
        "notification":
            "title":null,
            "body":null,
            "icon":null,
            "color":null,
            "sound":"default",
            "tag":null,
            "click_action":null,
            "body_loc_key":null,
            "body_loc_args":null,
            "title_loc_key":null,
            "title_loc_args":null
        
    ,
    "webpush":null,
    "apns":
        "headers":null,
        "payload":
            "aps":
                "alert":null,
                "badge":0,
                "sound":"default",
                "content-available":0,
                "mutable-content":0,
                "category":null,
                "thread-id":null
            
        
    ,
    "token":"MyValidToken",
    "topic":null,
    "condition":null
 

据我所知,该服务没有使用下面帖子中提到的“暂存”环境。

FCM service unavailable nack

我每天会收到数百个 UNAVAILABLE 答案,有时甚至会持续数小时。消息仍在通过,所以我不确定我是否被列入黑名单。如果我使用了错误的 URL 或达到了某种限制,我在他们的文档中看不到任何内容。

【问题讨论】:

FcmSharp 作者在这里。我对身份验证令牌生成进行了更改,它现在缓存了用于发送的 JWT 令牌,并且仅在到期时刷新。请尝试 2​​.4.0 版本,如果它解决了问题,请告诉我。 @bytefish 更新后没有任何改进。 :-( 请在github.com/bytefish/FcmSharp 的 bugtracker 中提交问题。 【参考方案1】:

这是因为 FcmSharp 服务没有实现某些 Google API 所需的未记录的指数回退功能。

有关更多信息,请参阅 GitHub 线程。

https://github.com/bytefish/FcmSharp/issues/31

【讨论】:

以上是关于FCM 消息始终以 503 响应的主要内容,如果未能解决你的问题,请参考以下文章

直接运行代码以响应接收到 APNS 消息

Firebase 云消息未在响应中收到 multicast_id

解析从 android onMessageReceived 上的 fcm 响应获得的 json

每当 CORS $http 请求失败时,返回的响应始终为 0

当针对多个 registration_id 时,FCM 返回单个注册 ID 的响应

REST API 是不是应该始终返回带有消息的响应?