Menggunakan payload Google Firebase Cloud Messaging v1 di Amazon SNS - Amazon Simple Notification Service

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 di dokumentasi Firebase Google.

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 dan Menyesuaikan pesan di seluruh platform dalam dokumentasi Firebase Google.

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 di android bidang. Jika Anda ingin menyetel TTL APNS atribut, gunakan payload FCM v1.

  • webpushKunciandroid,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 untuk apns mengharapkan nilai integer, sedangkan badge kunci dilewatkan untuk webpush mengharapkan nilai String. Dalam kasus di mana Anda memberikan badge 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

UNREGISTERED

InvalidPlatformToken

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.

INVALID_ARGUMENT

InvalidNotification

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.

SENDER_ID_MISMATCH

InvalidPlatformToken

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.

UNAVAILABLE

DependencyUnavailable

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.

INTERNAL

UnexpectedFailure

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.

THIRD_PARTY_AUTH_ERROR

InvalidCredentials

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.

QUOTA_EXCEEDED

Throttled

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 ErrorCodedi dokumentasi Firebase Google.

PERMISSION_DENIED

InvalidNotification

Badan notifikasi tidak valid.

Dalam kasus PERMISSION_DENIED pengecualian, pemanggil (FCMaplikasi Anda) tidak memiliki izin untuk menjalankan operasi yang ditentukan dalam payload. Arahkan ke FCM konsol Anda, dan verifikasi bahwa kredensil Anda mengaktifkan API tindakan yang diperlukan.