如何對 Amazon SNS 中的 Firebase Cloud Messaging (FCM) 行動推送通知失敗進行疑難排解?

上次更新日期:2021-10-06

我的 Firebase Cloud Messaging (FCM) 行動推送通知無法透過 Amazon Simple Notification Service (Amazon SNS) 來傳送。我該如何對此問題進行疑難排解?

解決方案

設定和檢視 Amazon CloudWatch Logs 的推送通知交付狀態屬性

驗證您是否可以直接從 FCM 收到通知

若要查看問題是出在 Amazon SNS 端點還是用戶端應用程式,請在 FCM 主控台上傳送測試訊息。如需指示,請參閱 FCM 文件中的傳送通知訊息 (適用於 iOS)傳送測試通知訊息 (適用於 Android)

傳送測試通知後,FCM 主控台會顯示面板來提供測試通知結果。如果您沒有收到通知,請遵循本文確認您使用的是正確的 FCM 訊息類型一節中的指示進行。

針對未收到推送通知的裝置,驗證與其相關聯的平台端點是否已啟動

1.    檢閱失敗的推送通知交付狀態日誌 (「狀態」:「失敗」)。

2.    檢查失敗的推送通知交付日誌中是否有下列值:「providerResponse」:「端點已停用」。如果您在失敗的交付日誌中看到這個值,則表示與未收到推送通知的裝置相關聯的平台端點已停用。

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 支援兩種訊息類型:通知訊息和資料訊息。通知訊息由 FCM SDK 自動處理。資料訊息則由用戶端應用程式處理。如需詳細資訊,請參閱 FCM 文件中的訊息類型和《Amazon SNS 開發人員指南》中的傳送平台特定訊息

如果您在處理用戶端應用程式上的訊息資料

請確定您使用的是資料訊息。如需詳細資訊,請參閱 FCM 文件中的資料訊息

如果您希望 FCM SDK 代表您的用戶端應用程式處理顯示通知

請確定您使用的是通知訊息。如需詳細資訊,請參閱 FCM 文件中的通知訊息

識別任何 FCM 錯誤回應碼並進行疑難排解

1.    檢閱失敗的推送通知交付狀態日誌 (「狀態」:「失敗」)。

2.    檢查失敗的推送通知交付日誌中是否有任何其他平台回應碼。然後,遵循 FCM 文件的下游訊息錯誤回應碼一節中針對該回應碼所列出的建議動作

注意:如需有關 FCM 錯誤碼和疑難排解最佳實務的詳細資訊,請參閱 FCM 文件中的 ErrorCode


此文章是否有幫助?


您是否需要帳單或技術支援?