使用平台特定承載發佈 - Amazon Simple Notification Service

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

使用平台特定承載發佈

您可以使用 AWS Management Console 或 Amazon SNS APIs 將具有平台特定承載的自訂訊息傳送至行動裝置。如需使用 Amazon SNS 的相關資訊APIs,請參閱 中的 行動推送API動作SNSMobilePush.java 檔案snsmobilepush.zip

傳送JSON格式化訊息

當您傳送平台特定的承載時,資料必須格式化為JSON鍵值對字串,並逸出引號。

下列範例顯示 FCM 平台的自訂訊息。

{ "GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"Hello\", \"body\": \"This is a test.\"}, \"data\": {\"dataKey\": \"example\"}}}}" }

傳送平台特定訊息

除了將自訂資料做為鍵值對傳送,您也可傳送平台特定的鍵值對。

下列範例顯示FCM參數的納入,time_to_live以及參數中自訂資料鍵值對collapse_key之後的 FCM data

{ "GCM": "{\"fcmV1Message\": {\"message\": {\"notification\": {\"title\": \"TitleTest\", \"body\": \"Sample message for Android or iOS endpoints.\"}, \"data\":{\"time_to_live\": 3600,\"collapse_key\":\"deals\"}}}}" }

如需 Amazon 中支援的每個推送通知服務支援的鍵值對清單SNS,請參閱以下內容:

重要

Amazon SNS 現在支援 Firebase Cloud Messaging (FCM) HTTP v1 API 將行動推播通知傳送至 Android 裝置。

2024 年 3 月 26 日 – Amazon SNS支援適用於 Apple 裝置和 Webpush 目的地API的 FCM HTTP v1。我們建議您API在 2024 年 6 月 1 日或之前將現有的行動推送應用程式遷移至最新的 FCM HTTP v1,以避免應用程式中斷。

在多個平台上向應用程式傳送訊息

若要將訊息傳送至安裝在多個平台上的應用程式,例如 FCM和 APNs,您必須先將行動端點訂閱至 Amazon 中的主題,SNS然後將訊息發佈至主題。

下列範例顯示要在 APNs、 FCM和 上傳送至訂閱行動端點的訊息ADM:

{ "default": "This is the default message which must be present when publishing a message to a topic. The default message will only be used if a message is not present for one of the notification platforms.", "APNS": "{\"aps\":{\"alert\": \"Check out these awesome deals!\",\"url\":\"www.amazon.com\"} }", "GCM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}", "ADM": "{\"data\":{\"message\":\"Check out these awesome deals!\",\"url\":\"www.amazon.com\"}}" }

將訊息APNs作為提醒或背景通知傳送至

Amazon SNS可以將訊息APNs以 alertbackground 通知的形式傳送至 (如需詳細資訊,請參閱 APNs 文件中的將背景更新推送至您的應用程式)。

  • alert APNs 通知會透過顯示警示訊息、播放聲音或將徽章新增至應用程式的圖示來通知使用者。

  • background APNs 通知會喚醒或指示您的應用程式對通知的內容採取行動,而不會通知使用者。

指定自訂 APNs 標頭值

建議您使用 Amazon SNSPublishAPI動作 AWS SDKs或 指定AWS.SNS.MOBILE.APNS.PUSH_TYPE預留訊息屬性的自訂值 AWS CLI。下列CLI範例background將指定主題content-available的 設定為 1apns-push-type將設定為 。

aws sns publish \ --endpoint-url https://sns.us-east-1.amazonaws.com \ --target-arn arn:aws:sns:us-east-1:123456789012:endpoint/APNS_PLATFORM/MYAPP/1234a567-bc89-012d-3e45-6fg7h890123i \ --message '{"APNS_PLATFORM":"{\"aps\":{\"content-available\":1}}"}' \ --message-attributes '{ \ "AWS.SNS.MOBILE.APNS.TOPIC":{"DataType":"String","StringValue":"com.amazon.mobile.messaging.myapp"}, \ "AWS.SNS.MOBILE.APNS.PUSH_TYPE":{"DataType":"String","StringValue":"background"} \ "AWS.SNS.MOBILE.APNS.PRIORITY":{"DataType":"String","StringValue":"5"}}', \ --message-structure json

從承載推斷APNs推送類型標頭

如果您未設定apns-push-typeAPNs標頭,Amazon background會根據 JSON格式化APNs承載組態aps字典中的content-available索引鍵,將標頭SNS設定為 alert或 。

注意

Amazon SNS 只能推論 alertbackground標頭,但可以將apns-push-type標頭設定為其他值。

  • apns-push-type 已設定為 alert

    • 如果 aps 字典僅包含設定為 content-available1,且一個以上金鑰可觸發使用者互動。

    • 如果 aps 字典包含設定為 content-available0或者 content-available 金鑰不存在。

    • 如果 content-available 金鑰的值不是整數或布林值。

  • apns-push-type 已設定為 background

    • 如果 aps 字典包含設定為 content-available1,且沒有其他金鑰可觸發使用者互動。

      重要

      如果 Amazon SNS傳送原始組態物件APNs作為僅限背景的通知,您必須在aps字典1中包含 content-available 設定為 。雖然您可以加入自定金鑰,aps 字典絕對不能包含可觸發使用者互動的任何金鑰 (例如:通知、徽章或聲音)。

以下是原始組態物件範例。

{ "APNS": "{\"aps\":{\"content-available\":1},\"Foo1\":\"Bar\",\"Foo2\":123}" }

在此範例中,Amazon 會將訊息的apns-push-typeAPNs標頭SNS設定為 background。當 Amazon SNS偵測到apn字典包含設定為 的content-available金鑰1,且不包含可觸發使用者互動的任何其他金鑰時,它會將標頭設定為 background