Firebase Cloud Messaging 端點的 Amazon SNS管理 - Amazon Simple Notification Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Firebase Cloud Messaging 端點的 Amazon SNS管理

管理和維護裝置權杖

您可以遵循下列步驟,確保行動應用程式推播通知的可交付性:

  1. 將所有裝置權杖、對應的 Amazon SNS端點 ARNs和時間戳記存放在應用程式伺服器上。

  2. 移除所有過時的權杖,並刪除對應的 Amazon SNS端點 ARNs。

在應用程式的初始啟動時,您將收到裝置的裝置權杖 (也稱為註冊權杖)。此裝置權杖由裝置的作業系統挖掘,並與FCM應用程式綁定。收到此裝置權杖後,您可以將它註冊到 Amazon SNS 作為平台端點。建議您將裝置權杖、Amazon SNS平台端點 ARN和時間戳記儲存至應用程式伺服器或其他持久性存放區。若要設定FCM應用程式以擷取和存放裝置權杖,請參閱 Google Firebase 文件中的擷取和存放註冊權杖

請務必維護 up-to-date權杖。在下列情況下,您使用者的裝置權杖可能會變更:

  1. 行動應用程式會在新裝置上還原。

  2. 使用者解除安裝或更新應用程式。

  3. 使用者會清除應用程式資料。

當您的裝置權杖變更時,建議您使用新的權杖更新對應的 Amazon SNS端點。這可讓 Amazon SNS 繼續與已註冊裝置通訊。您可以在行動應用程式中實作下列虛擬程式碼來執行此操作。它描述了建立和維護已啟用平台端點的建議做法。此方法可在每次行動應用程式啟動時執行,或在背景中作為排程任務執行。

虛擬程式碼

使用下列FCM虛擬程式碼來管理和維護裝置權杖。

retrieve the latest token from the mobile OS if (endpoint arn not stored) # first time registration call CreatePlatformEndpoint store returned endpoint arn endif call GetEndpointAttributes on the endpoint arn if (getting attributes encountered NotFound exception) #endpoint was deleted call CreatePlatformEndpoint store returned endpoint arn else if (token in endpoint does not match latest) or (GetEndpointAttributes shows endpoint as disabled) call SetEndpointAttributes to set the latest token and enable the endpoint endif endif

若要進一步了解權杖更新需求,請參閱 Google Firebase 文件中的定期更新權杖

偵測無效的權杖

當訊息以無效的裝置權杖傳送至 FCM v1 端點時,Amazon SNS將收到下列其中一個例外狀況:

  • UNREGISTERED (HTTP 404) – 當 Amazon SNS收到此例外狀況時,您將收到一個交付失敗事件,其中 FailureTypeInvalidPlatformToken,而與端點相關聯的 FailureMessage 平台字符無效。 在此情況下,當交付失敗時,Amazon SNS會停用您的平台端點。

  • INVALID_ARGUMENT (HTTP400) – Amazon SNS收到此例外狀況時,表示裝置權杖或訊息承載無效。如需詳細資訊,請參閱 Google Firebase 文件ErrorCode中的 。

由於 INVALID_ARGUMENT 可以在這些情況下傳回,因此 Amazon SNS將傳回 FailureTypeInvalidNotification,而通知內文FailureMessage的 是無效的 。 收到此錯誤時,請確認您的承載是否正確。如果正確,請確認裝置權杖為 up-to-date。在此情況下,當交付失敗時,Amazon SNS不會停用您的平台端點。

另一個您會遇到InvalidPlatformToken交付失敗事件的情況是,註冊的裝置權杖不屬於嘗試傳送該訊息的應用程式。在此情況下,Google 會傳回 SENDER_ID_MISMATCH 錯誤。在此情況下,當交付失敗時,Amazon SNS會停用您的平台端點。

當您為應用程式設定交付狀態記錄時,API您可以在 中 CloudWatch取得從 FCM v1 收到的所有觀察到的錯誤碼。

若要接收應用程式的交付事件,請參閱 可用的應用程式事件

移除過時的權杖

當訊息傳遞至端點裝置開始失敗時,權杖即視為過時。Amazon 會將SNS這些過時權杖設定為平台應用程式的停用端點。當您發佈至停用的端點時,Amazon SNS將傳回具有 FailureTypeEventDeliveryFailure事件EndpointDisabled,且端點FailureMessage已停用 。若要接收應用程式的交付事件,請參閱 可用的應用程式事件

當您從 Amazon 收到此錯誤時SNS,您需要移除或更新平台應用程式中的過時權杖。