Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan payload Google Firebase Cloud Messaging v1 di Amazon SNS
Amazon SNS mendukung penggunaan FCM HTTP v1 API untuk mengirim notifikasi ke tujuan Android, iOS, dan Webpush. Topik ini memberikan contoh struktur payload saat menerbitkan notifikasi push seluler menggunakanCLI, atau Amazon SNSAPI.
Anda dapat menyertakan jenis pesan berikut di payload saat mengirim FCM notifikasi:
-
Pesan data — Pesan data ditangani oleh aplikasi klien Anda dan berisi pasangan nilai kunci khusus. Saat membuat pesan data, Anda harus menyertakan
data
kunci dengan JSON objek sebagai nilainya, lalu masukkan pasangan nilai kunci kustom Anda. -
Pesan pemberitahuan atau pesan tampilan - Pesan notifikasi berisi sekumpulan kunci yang telah ditentukan sebelumnya yang ditangani oleh. FCM SDK Tombol-tombol ini bervariasi tergantung pada jenis perangkat yang Anda kirimkan. Untuk informasi selengkapnya tentang kunci notifikasi khusus platform, lihat berikut ini:
Untuk informasi selengkapnya tentang jenis FCM pesan, lihat Jenis pesan
Daftar Isi
Menggunakan struktur payload FCM v1 untuk mengirim pesan
Jika Anda membuat FCM aplikasi untuk pertama kalinya, atau ingin memanfaatkan fitur FCM v1, Anda dapat memilih untuk mengirim muatan berformat FCM v1. Untuk melakukan ini, Anda harus menyertakan kunci fcmV1Message
tingkat atas. Untuk informasi selengkapnya tentang membuat payload FCM v1, lihat Memigrasi dari lama FCM APIs ke HTTP v1
FCMv1 contoh payload dikirim ke Amazon: SNS
catatan
Nilai GCM
kunci yang digunakan dalam contoh berikut harus dikodekan sebagai String saat menerbitkan notifikasi menggunakan Amazon. SNS
{ "GCM": "{ \"fcmV1Message\": { \"validate_only\": false, \"message\": { \"notification\": { \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataGen\": \"priority message\" }, \"android\": { \"priority\": \"high\", \"notification\": { \"body_loc_args\": [\"string\"], \"title_loc_args\": [\"string\"], \"sound\": \"string\", \"title_loc_key\": \"string\", \"title\": \"string\", \"body\": \"string\", \"click_action\": \"clicky_clacky\", \"body_loc_key\": \"string\" }, \"data\": { \"dataAndroid\": \"priority message\" }, \"ttl\": \"10023.32s\" }, \"apns\": { \"payload\": { \"aps\": { \"alert\": { \"subtitle\": \"string\", \"title-loc-args\": [\"string\"], \"title-loc-key\": \"string\", \"loc-args\": [\"string\"], \"loc-key\": \"string\", \"title\": \"string\", \"body\": \"string\" }, \"category\": \"Click\", \"content-available\": 0, \"sound\": \"string\", \"badge\": 5 } } }, \"webpush\": { \"notification\": { \"badge\": \"5\", \"title\": \"string\", \"body\": \"string\" }, \"data\": { \"dataWeb\": \"priority message\" } } } } }" }
Saat mengirim JSON payload, pastikan untuk menyertakan message-structure
atribut dalam permintaan Anda, dan atur kejson
.
CLIcontoh:
aws sns publish --topic $TOPIC_ARN --message '{"GCM": "{\"fcmV1Message\": {\"message\":{\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"android\":{\"priority\":\"high\",\"notification\":{\"title\":\"string\",\"body\":\"string\"},\"data\":{\"customAndroidDataKey\":\"custom key value\"},\"ttl\":\"0s\"},\"apns\":{\"payload\":{\"aps\":{\"alert\":{\"title\":\"string\", \"body\":\"string\"},\"content-available\":1,\"badge\":5}}},\"webpush\":{\"notification\":{\"badge\":\"URL\",\"body\":\"Test\"},\"data\":{\"customWebpushDataKey\":\"priority message\"}},\"data\":{\"customGeneralDataKey\":\"priority message\"}}}}", "default": "{\"notification\": {\"title\": \"test\"}"}' --region $REGION --message-structure json
Untuk informasi selengkapnya tentang mengirim payload berformat FCM v1, lihat hal berikut di dokumentasi Firebase Google:
Menggunakan struktur payload lama untuk mengirim pesan ke v1 FCM API
Saat bermigrasi ke FCM v1, Anda tidak perlu mengubah struktur payload yang Anda gunakan untuk kredensi lama Anda. Amazon SNS mengubah payload Anda menjadi struktur payload FCM v1 baru, dan mengirimkannya ke Google.
Format payload pesan masukan:
{ "GCM": "{\"notification\": {\"title\": \"string\", \"body\": \"string\", \"android_channel_id\": \"string\", \"body_loc_args\": [\"string\"], \"body_loc_key\": \"string\", \"click_action\": \"string\", \"color\": \"string\", \"icon\": \"string\", \"sound\": \"string\", \"tag\": \"string\", \"title_loc_args\": [\"string\"], \"title_loc_key\": \"string\"}, \"data\": {\"message\": \"priority message\"}}" }
Pesan dikirim ke Google:
{ "message": { "token": "***", "notification": { "title": "string", "body": "string" }, "android": { "priority": "high", "notification": { "body_loc_args": [ "string" ], "title_loc_args": [ "string" ], "color": "string", "sound": "string", "icon": "string", "tag": "string", "title_loc_key": "string", "title": "string", "body": "string", "click_action": "string", "channel_id": "string", "body_loc_key": "string" }, "data": { "message": "priority message" } }, "apns": { "payload": { "aps": { "alert": { "title-loc-args": [ "string" ], "title-loc-key": "string", "loc-args": [ "string" ], "loc-key": "string", "title": "string", "body": "string" }, "category": "string", "sound": "string" } } }, "webpush": { "notification": { "icon": "string", "tag": "string", "body": "string", "title": "string" }, "data": { "message": "priority message" } }, "data": { "message": "priority message" } } }
Potensi risiko
-
Pemetaan lama ke v1 tidak mendukung Layanan Pemberitahuan Push Apple (APNS)
headers
atau tombol.fcm_options
Jika Anda ingin menggunakan bidang ini, kirim payload FCM v1. -
Dalam beberapa kasus, header pesan diperlukan oleh FCM v1 untuk mengirim notifikasi senyap ke perangkat AndaAPNs. Jika saat ini Anda mengirim notifikasi senyap ke APNs perangkat Anda, mereka tidak akan berfungsi dengan pendekatan lama. Sebagai gantinya, kami sarankan menggunakan payload FCM v1 untuk menghindari masalah yang tidak terduga. Untuk menemukan daftar APNs header dan tujuan penggunaannya, lihat Berkomunikasi dengan APNs
di Panduan Pengembang Apple. -
Jika Anda menggunakan SNS atribut
TTL
Amazon saat mengirim notifikasi, itu hanya akan diperbarui diandroid
bidang. Jika Anda ingin menyetelTTL
APNS atribut, gunakan payload FCM v1. -
webpush
Kunciandroid
,apns
, dan akan dipetakan dan diisi dengan semua kunci yang relevan yang disediakan. Misalnya, jika Anda menyediakantitle
, yang merupakan kunci yang dibagikan di antara ketiga platform, pemetaan FCM v1 akan mengisi ketiga platform dengan judul yang Anda berikan. -
Beberapa kunci bersama di antara platform mengharapkan jenis nilai yang berbeda. Misalnya,
badge
kunci yang diteruskan untukapns
mengharapkan nilai integer, sedangkanbadge
kunci dilewatkan untukwebpush
mengharapkan nilai String. Dalam kasus di mana Anda memberikanbadge
kunci, pemetaan FCM v1 hanya akan mengisi kunci yang Anda berikan nilai valid.
FCMperistiwa kegagalan pengiriman
Tabel berikut menyediakan jenis SNS kegagalan Amazon yang sesuai dengan kode kesalahan/status yang diterima dari Google untuk permintaan notifikasi FCM v1. Semua kode kesalahan yang diamati yang diterima dari FCM v1 API tersedia untuk Anda CloudWatch saat Anda mengatur pencatatan status pengiriman untuk aplikasi Anda.
FCMkode kesalahan/status | Jenis SNS kegagalan Amazon | Pesan kegagalan | Penyebab dan mitigasi |
---|---|---|---|
|
|
Token platform yang terkait dengan titik akhir tidak valid. |
Token perangkat yang dilampirkan ke titik akhir Anda sudah basi atau tidak valid. Amazon SNS menonaktifkan titik akhir Anda. Perbarui SNS titik akhir Amazon ke token perangkat terbaru. |
|
|
Badan notifikasi tidak valid. |
Token perangkat atau payload pesan mungkin tidak valid. Verifikasi bahwa payload pesan Anda valid. Jika payload pesan valid, perbarui SNS titik akhir Amazon ke token perangkat terbaru. |
|
|
Token platform yang terkait dengan titik akhir tidak valid. |
Aplikasi platform yang terkait dengan token perangkat tidak memiliki izin untuk mengirim ke token perangkat. Verifikasi bahwa Anda menggunakan FCM kredensil yang benar di aplikasi SNS platform Amazon Anda. |
|
|
Ketergantungan tidak tersedia. |
FCMtidak dapat memproses permintaan tepat waktu. Semua percobaan ulang yang dijalankan oleh Amazon SNS telah gagal. Anda dapat menyimpan pesan-pesan ini dalam antrean huruf mati (DLQ) dan mengaktifkannya kembali nanti. |
|
|
Kegagalan tak terduga; silakan hubungi Amazon. Frasa kegagalan [Kesalahan Internal]. |
FCMServer mengalami kesalahan saat mencoba memproses permintaan Anda. Semua percobaan ulang yang dijalankan oleh Amazon SNS telah gagal. Anda dapat menyimpan pesan-pesan ini dalam antrean huruf mati (DLQ) dan mengaktifkannya kembali nanti. |
|
|
Kredensi aplikasi platform tidak valid. |
Pesan yang ditargetkan ke perangkat iOS atau perangkat Webpush tidak dapat dikirim. Verifikasi bahwa kredenal pengembangan dan produksi Anda valid. |
|
|
Permintaan dibatasi oleh [gcm]. |
Kuota rasio pesan, kuota tarif pesan perangkat, atau kuota tarif pesan topik telah terlampaui. Untuk informasi tentang cara mengatasi masalah ini, lihat ErrorCode |
|
|
Badan notifikasi tidak valid. |
Dalam kasus |