如何对 Amazon SNS 中的 Firebase 云消息收发 (FCM) 移动推送通知失败进行故障排除?

上次更新日期:2021 年 10 月 6 日

我的 Firebase 云消息收发 (FCM) 移动推送通知无法通过 Amazon Simple Notification Service (Amazon SNS) 发送。我该如何排查此问题?

解决方法

配置并查看 Amazon CloudWatch Logs 的推送通知传输状态属性

验证您是否可以直接从 FCM 接收通知

要查看问题是出现在 Amazon SNS 端点还是客户应用程序端,请在 FCM 控制台上发送测试消息。有关说明,请参阅 FCM 文档中的发送通知消息(适用于 iOS)发送测试通知消息(适用于 Android)

发送测试通知后,FCM 控制台将显示一个提供测试通知结果的面板。如果您没有收到通知,请按照本文中确认您使用的是正确的 FCM 消息类型部分中的说明进行操作。

验证与未接收推送通知的设备关联的平台端点是否已激活

1.    检查发送失败的推送通知的传输状态日志 ("status": "FAILURE")。

2.    检查发送失败的推送通知的日志以确定是否有以下值:"providerResponse": "Endpoint is disabled"。如果您在失败的传输日志中看到此值,则与未接收推送通知的设备关联的平台端点将停用。

3.    如果平台端点已停用,请通过运行 SetEndPointAttributes API 操作重新激活。运行 SetEndPointAttributes API 操作会将端点与最新的有效设备令牌关联。

注意:有关更多信息,请参阅创建平台端点故障排除部分中的重新启用与无效设备令牌关联的平台端点

FCM 推送通知传输失败 CloudWatch 日志事件示例

{
  "notification": {
    "messageMD5Sum": "c8c339cf07dc39c9388253dgc81f257",
    "messageId": "fg207f98-0244-6767-96e2-45b1fg451gg8",
    "timestamp": "2021-05-25 22:27:51.889"
  },
  "delivery": {
    "deliveryId": "76ab7dcd-f444-5b4f-9d1b-24ea8863d9bc",
    "destination": "arn:aws:sns:us-east-1:123456789101:endpoint/GCM/MyAndroidApp/682dc992-a47f-45f7-b980-97727cce0a9c",
    "providerResponse": "Endpoint is disabled",
    "dwellTimeMs": 28,
    "attempts": 1,
    "token": "ojnco9nc9weucn9encx9ewunc9nu9w9euncec9necn9xexnexex9encewcerve0f0o0dmco9j",
    "statusCode": 400
  },
  "status": "FAILURE"
}

确认您使用的是正确的 FCM 消息类型

注意:FCM 支持两种类型的消息:“Notification”消息和“Data”消息。“Notification”消息由 FCM SDK 自动处理。“Data”消息由客户端应用程序处理。有关更多信息,请参阅 FCM 文档中的消息类型和 Amazon SNS 开发人员指南中的设置特定于平台的消息

如果您在客户端应用程序上处理消息数据

请确保使用“Data”消息。有关更多信息,请参阅 FCM 文档中的 Data 消息

如果您希望 FCM SDK 代表客户端应用程序处理显示通知

请确保使用“Notification”消息。有关更多信息,请参阅 FCM 文档中的 Notification 消息

识别和排除任何 FCM 错误响应代码

1.    检查发送失败的推送通知的传输状态日志 ("status": "FAILURE")。

2.    检查失败的推送通知传送日志中是否有任何其他的平台响应代码。然后,按照 FCM 文档的下游消息错误响应代码部分中为该代码列出的推荐操作进行操作。

注意:有关 FCM 错误代码和故障排除最佳实践的更多信息,请参阅 FCM 文档中的ErrorCode


这篇文章对您有帮助吗?


您是否需要账单或技术支持?