

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menerbitkan notifikasi Amazon SNS dengan muatan khusus platform
<a name="sns-send-custom-platform-specific-payloads-mobile-devices"></a>

Anda dapat menggunakan Amazon SNS Konsol Manajemen AWS atau APIs untuk mengirim pesan khusus dengan muatan khusus platform ke perangkat seluler. Untuk informasi tentang menggunakan Amazon SNS APIs, lihat [Tindakan API push seluler](mobile-push-api.md) dan `SNSMobilePush.java` file di. `[snsmobilepush.zip](samples/snsmobilepush.zip)` 

## Mengirim pesan berformat JSON
<a name="mobile-push-send-json"></a>

Saat Anda mengirim muatan khusus platform, data harus diformat sebagai string pasangan nilai kunci JSON, dengan tanda kutip diloloskan.

Contoh berikut menunjukkan pesan khusus untuk platform FCM.

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

## Mengirim pesan khusus platform
<a name="mobile-push-send-platform"></a>

Selain mengirim data khusus sebagai pasangan nilai kunci, Anda dapat mengirim pasangan nilai kunci khusus platform.

Contoh berikut menunjukkan penyertaan parameter FCM `time_to_live` dan `collapse_key` setelah pasangan nilai kunci data kustom dalam parameter `data` FCM.

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

Untuk daftar pasangan kunci-nilai yang didukung oleh masing-masing layanan notifikasi push yang didukung di Amazon SNS, lihat berikut ini: 

**penting**  
Amazon SNS sekarang mendukung Firebase Cloud Messaging (FCM) HTTP v1 API untuk mengirimkan notifikasi push seluler ke perangkat Android.  
26 Maret 2024 - Amazon SNS mendukung FCM HTTP v1 API untuk perangkat Apple dan tujuan Webpush. Kami menyarankan Anda memigrasikan aplikasi push seluler yang ada ke FCM HTTP v1 API terbaru pada atau sebelum 1 Juni 2024 untuk menghindari gangguan aplikasi.
+ [Referensi Kunci Payload](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/PayloadKeyReference.html#/apple_ref/doc/uid/TP40008194-CH17-SW1) dalam dokumentasi APNs 
+ [Protokol HTTP Firebase Cloud Messaging](https://firebase.google.com/docs/reference/fcm/rest/v1/projects.messages) dalam dokumentasi FCM
+ [Kirim Pesan](https://developer.amazon.com/sdk/adm/sending-message.html) di dokumentasi ADM

## Mengirim pesan ke aplikasi di berbagai platform
<a name="mobile-push-send-multiplatform"></a>

Untuk mengirim pesan ke aplikasi yang diinstal pada perangkat untuk beberapa platform, seperti FCM dan APNs, Anda harus terlebih dahulu berlangganan titik akhir seluler ke topik di Amazon SNS dan kemudian mempublikasikan pesan ke topik tersebut.

Contoh berikut menunjukkan pesan untuk dikirim ke endpoint seluler berlangganan pada APNs, FCM, dan 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\"}}" 
}
```

## Mengirim pesan ke APNs sebagai peringatan atau pemberitahuan latar belakang
<a name="mobile-push-send-message-apns-background-notification"></a>

Amazon SNS dapat mengirim pesan ke APNs as `alert` atau `background` notifikasi (untuk informasi selengkapnya, lihat [Mendorong Pembaruan Latar Belakang ke Aplikasi Anda](https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app) dalam APNs dokumentasi).
+ `alert` APNs Pemberitahuan menginformasikan pengguna dengan menampilkan pesan peringatan, memutar suara, atau menambahkan lencana ke ikon aplikasi Anda.
+ `background` APNs Pemberitahuan bangun atau menginstruksikan aplikasi Anda untuk bertindak atas konten pemberitahuan, tanpa memberi tahu pengguna.

### Menentukan nilai APNs header kustom
<a name="specify-custom-header-value"></a>

Sebaiknya tentukan nilai kustom untuk [atribut pesan yang `AWS.SNS.MOBILE.APNS.PUSH_TYPE` dicadangkan](sns-message-attributes.md#sns-attrib-mobile-reserved) menggunakan tindakan Amazon `Publish` SNS API AWS SDKs, atau. AWS CLI Contoh CLI berikut menyetel `content-available` ke `1` dan `apns-push-type` ke `background` untuk topik yang ditentukan. 

```
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
```

**catatan**  
Pastikan bahwa struktur JSON valid. Tambahkan koma setelah setiap pasangan kunci-nilai, kecuali yang terakhir.

### Menyimpulkan header tipe APNs push dari payload
<a name="inferring-push-type-header-from-payload"></a>

Jika Anda tidak menyetel `apns-push-type` APNs header, Amazon SNS menetapkan header ke `alert` atau `background` bergantung pada `content-available` kunci dalam `aps` kamus konfigurasi payload berformat APNs JSON Anda.

**catatan**  
Amazon SNS hanya dapat menyimpulkan header `alert` atau `background`, meskipun header `apns-push-type` dapat diatur ke nilai lain.
+ `apns-push-type` diatur ke `alert`
  + Jika kamus `aps` berisi `content-available` yang diatur ke `1` dan *satu atau beberapa kunci* yang memicu interaksi pengguna.
  + Jika kamus `aps` berisi `content-available` yang diatur ke `0` *atau* jika kunci `content-available` tidak ada.
  + Jika nilai kunci `content-available` bukan bilangan bulat atau Boolean.
+ `apns-push-type` diatur ke `background`
  + Jika kamus `aps` *hanya* berisi `content-available` yang diatur ke `1` dan *tidak ada kunci lain* yang memicu interaksi pengguna.
**penting**  
Jika Amazon SNS mengirimkan objek konfigurasi mentah APNs sebagai notifikasi khusus latar belakang, Anda harus menyertakan `content-available` set ke dalam kamus. `1` `aps` Meskipun Anda dapat menyertakan kunci kustom, kamus `aps` tidak boleh berisi kunci apa pun yang memicu interaksi pengguna (misalnya, peringatan, lencana, atau suara).

Berikut ini adalah contoh objek konfigurasi mentah.

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

Dalam contoh ini, Amazon SNS menyetel `apns-push-type` APNs header untuk pesan tersebut. `background` Saat Amazon SNS mendeteksi bahwa kamus `apn` berisi kunci `content-available` yang diatur ke `1`—dan tidak berisi kunci lain yang dapat memicu interaksi pengguna—itu menyetel header ke `background`.