我最近实现了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
}
据我所知,该服务未使用下文中提到的“登台”环境。
我每天都会收到数百个UNAVAILABLE
答案,有时甚至是数小时。消息仍然通过,所以我不确定我是否已列入黑名单。我没有在他们的文档中看到任何内容说明我使用的是错误的URL还是达到某种限制。
答案 0 :(得分:1)
这是因为FcmSharp服务未实现某些Google Apis所需的未记录的指数补偿功能。
有关更多信息,请参见GitHub线程。