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

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

使用平台特定承載發佈 Amazon SNS 通知

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

傳送JSON格式化的訊息

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

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

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

傳送平台特定訊息

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

下列範例顯示參數的包含,以time_to_live及FCM參數中自訂資料索引鍵值配對collapse_key之後的FCMdata內容。

{ "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 現在支持火力地堡雲消息傳遞(FCM)HTTPv1,API用於向 Android 設備發送移動推送通知。

2024 年 3 月 26 日 — Amazon API 為蘋果設備和推送目的地SNS支持 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文件中的將背景更新推送到您的應用程式)。

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

  • backgroundAPNs通知會喚醒或指示您的應用程式在不通知使用者的情況下根據通知內容採取行動。

指定自訂 APNs 標頭值

建議您使用 Amazon SNS Publish API 動作, AWS SDKs或指定AWS.SNS.MOBILE.APNS.PUSH_TYPE保留訊息屬性的自訂值 AWS CLI。下列CLI範例會backgroundcontent-available對指定apns-push-type的主題設定為1和。

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推送類型標頭

如果您未設SNS定apns-push-typeAPNs標頭,Amazon 會將標題設定為alertbackground根據您JSON格式化的APNs承載組態aps字典中的content-available金鑰設定標頭。

注意

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做為僅背景通知,您必須在字典1中包含 content-available set 為。aps雖然您可以加入自定金鑰,aps 字典絕對不能包含可觸發使用者互動的任何金鑰 (例如:通知、徽章或聲音)。

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

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

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