Dokumen ini menyediakan referensi untuk sintaksis XMPP yang digunakan untuk meneruskan pesan antara server aplikasi Anda, aplikasi klien, dan Firebase Cloud Messaging (FCM). Server aplikasi Anda harus terhubung ke endpoint berikut ini:
// Production fcm-xmpp.googleapis.com:5235 // Testing fcm-xmpp.googleapis.com:5236
Parameter dan opsi yang tersedia masuk ke dalam beberapa kategori berikut ini:
- Sintaksis pesan downstream
- Kode respons error untuk pesan downstream
- Sintaksis pesan upstream
- Pesan kontrol FCM
Sintaksis pesan downstream
Bagian ini memberikan sintaksis untuk mengirim pesan downstream.
Pesan XMPP Downstream (JSON)
Tabel berikut ini berisi daftar target, opsi, dan payload untuk pesan JSON XMPP.
Parameter | Penggunaan | Deskripsi | |
---|---|---|---|
Target | |||
to |
Opsional, string |
Parameter ini menetapkan penerima pesan. Nilainya dapat berupa token pendaftaran perangkat, kunci notifikasi grup perangkat, atau topik tunggal (diawali dengan |
|
condition |
Opsional, string | Parameter ini menetapkan ekspresi logika dari kondisi yang menentukan target pesan. Kondisi yang didukung: Topik, yang diformat sebagai "'yourTopic' dalam topik". Nilai ini tidak peka huruf besar/kecil. Operator yang didukung: |
|
Opsi | |||
message_id |
Wajib, string | Parameter ini secara unik mengidentifikasi pesan dalam koneksi XMPP. |
|
collapse_key |
Opsional, string | Parameter ini mengidentifikasi grup pesan (misalnya, dengan
Tidak ada jaminan untuk urutan pesan yang akan dikirim. Catatan: Maksimum 4 kunci penciutan berbeda diizinkan pada waktu tertentu. Artinya, FCM dapat menyimpan empat pesan berbeda secara bersamaan per aplikasi klien. Jika Anda melebihi jumlah ini, tidak ada jaminan manakah dari empat kunci penciutan ini yang akan disimpan oleh FCM. |
|
priority |
Opsional, string | Menetapkan prioritas pesan. Nilai yang valid adalah "normal" dan "high". Di platform Apple, hal ini sesuai dengan prioritas APN 5 dan 10. Secara default, pesan notifikasi dikirim dengan prioritas tinggi dan pesan data dikirim dengan prioritas normal. Prioritas normal mengoptimalkan konsumsi baterai aplikasi klien dan sebaiknya digunakan kecuali jika diperlukan pengiriman dengan segera. Untuk pesan dengan prioritas normal, aplikasi dapat menerima pesan dengan penundaan yang tidak ditetapkan. Jika dikirim dengan prioritas tinggi, pesan akan dikirim dengan segera dan aplikasi dapat menampilkan notifikasi. |
|
content_available |
Opsional, boolean | Di platform Apple, gunakan kolom ini untuk mewakili
|
|
mutable_content |
Opsional, boolean JSON | Di platform Apple, gunakan kolom ini untuk mewakili
|
|
time_to_live |
Opsional, angka | Parameter ini menetapkan berapa lama (dalam detik) pesan harus disimpan dalam penyimpanan FCM jika perangkat sedang offline. Waktu aktif maksimum yang didukung adalah 4 minggu, dan nilai defaultnya adalah 4 minggu. Untuk informasi lebih lanjut, lihat Menetapkan masa aktif pesan. |
|
dry_run |
Opsional, boolean | Jika disetel ke Nilai defaultnya adalah |
|
Payload | |||
data |
Opsional, objek | Parameter ini menetapkan key-value pair payload pesan. Misalnya, dengan Di platform Apple, jika pesan dikirim melalui APN, pesan tersebut mewakili kolom data kustom. Jika
dikirimkan oleh FCM,
pesan tersebut ditunjukkan sebagai kamus nilai kunci di Di Android, parameter ini menghasilkan tambahan intent bernama Kunci tidak boleh berupa kata yang telah digunakan ("from" atau "message_type", atau kata apa pun yang dimulai dengan "google" atau "gcm"). Jangan gunakan kata apa pun yang didefinisikan dalam tabel ini (seperti Nilai dalam jenis string direkomendasikan. Anda harus mengonversi nilai dalam objek atau jenis data non-string lainnya (misalnya, bilangan bulat atau boolean) menjadi string. |
|
notification |
Opsional, objek | Parameter ini menetapkan key-value pair bawaan yang dapat dilihat pengguna untuk payload notifikasi. Lihat Dukungan payload notifikasi untuk mengetahui detailnya. Untuk mengetahui informasi
lebih lanjut mengenai opsi pesan notifikasi dan pesan data, lihat
Jenis pesan. Jika payload notifikasi disediakan, atau opsi content_available ditetapkan ke true untuk pesan ke perangkat Apple, pesan tersebut akan dikirim melalui APN. Sebaliknya, pesan akan dikirim melalui FCM.
|
Dukungan payload notifikasi
Tabel di bawah ini mencantumkan kunci bawaan yang tersedia untuk membuat pesan notifikasi untuk platform Apple dan Android.
Parameter | Penggunaan | Deskripsi |
---|---|---|
title |
Opsional, string |
Judul notifikasi. Kolom ini tidak ditampilkan di ponsel dan tablet. |
body |
Opsional, string |
Teks isi notifikasi. |
sound |
Opsional, string |
Suara yang diputar saat perangkat menerima notifikasi.
String yang menentukan file suara dalam paket utama aplikasi klien atau dalam folder
|
badge |
Opsional, string |
Nilai badge pada ikon aplikasi layar utama. Jika tidak ditentukan, badge tidak diubah. Jika disetel ke |
click_action |
Opsional, string |
Tindakan yang terkait dengan klik pengguna pada notifikasi. Terkait dengan |
subtitle |
Opsional, string |
Subjudul notifikasi. |
body_loc_key |
Opsional, string |
Kunci ke string isi di dalam resource string aplikasi yang akan digunakan untuk melokalkan teks isi ke bahasa pengguna saat ini.
Terkait dengan Baca Referensi Kunci Payload dan Melokalkan Isi Notifikasi Jarak Jauh untuk mengetahui informasi selengkapnya. |
body_loc_args |
Opsional, array JSON sebagai string |
Nilai string variabel yang akan digunakan sebagai pengganti penentu format dalam
Terkait dengan Baca Referensi Kunci Payload dan Melokalkan Isi Notifikasi Jarak Jauh untuk mengetahui informasi selengkapnya. |
title_loc_key |
Opsional, string |
Kunci untuk string judul di dalam resource string aplikasi yang akan digunakan untuk melokalkan teks judul ke bahasa pengguna saat ini.
Terkait dengan Baca Referensi Kunci Payload dan Melokalkan Isi Notifikasi Jarak Jauh untuk mengetahui informasi selengkapnya. |
title_loc_args |
Opsional, array JSON sebagai string |
Nilai string variabel yang akan digunakan sebagai pengganti penentu format dalam
Terkait dengan Baca Referensi Kunci Payload dan Melokalkan Isi Notifikasi Jarak Jauh untuk mengetahui informasi selengkapnya. |
Parameter | Penggunaan | Deskripsi |
---|---|---|
title |
Opsional, string |
Judul notifikasi. |
body |
Opsional, string |
Teks isi notifikasi. |
android_channel_id |
Opsional, string |
ID saluran notifikasi (baru di Android O). Aplikasi harus membuat saluran dengan ID saluran ini sebelum menerima notifikasi apa pun dengan ID saluran ini. Jika Anda tidak mengirim ID saluran ini pada permintaan, atau jika ID saluran yang disediakan belum dibuat oleh aplikasi, FCM akan menggunakan ID saluran yang ditentukan dalam manifes aplikasi. |
icon |
Opsional, string |
Ikon notifikasi.
Menyetel ikon notifikasi ke |
sound |
Opsional, string |
Suara yang diputar saat perangkat menerima notifikasi. Mendukung |
tag |
Opsional, string |
ID yang digunakan untuk mengganti notifikasi yang ada di panel samping notifikasi. Jika tidak ditentukan, setiap permintaan akan membuat notifikasi baru. Jika ditentukan dan notifikasi dengan tag yang sama telah ditampilkan, notifikasi yang baru akan menggantikan notifikasi lama di panel samping notifikasi. |
color |
Opsional, string |
Warna ikon notifikasi, dinyatakan dalam format |
click_action |
Opsional, string |
Tindakan yang terkait dengan klik pengguna pada notifikasi. Jika ditentukan, aktivitas dengan filter intent yang cocok akan diluncurkan ketika pengguna mengklik notifikasi. |
body_loc_key |
Opsional, string |
Kunci untuk string isi di dalam resource string aplikasi yang akan digunakan untuk melokalkan teks isi ke bahasa pengguna saat ini. Lihat Resource String untuk informasi lebih lanjut. |
body_loc_args |
Opsional, array JSON sebagai string |
Nilai string variabel yang akan digunakan sebagai pengganti penentu format dalam
Lihat Pengaturan Format dan Gaya untuk informasi lebih lanjut. |
title_loc_key |
Opsional, string |
Kunci untuk string judul di dalam resource string aplikasi yang akan digunakan untuk melokalkan teks judul ke bahasa pengguna saat ini. Lihat Resource String untuk informasi lebih lanjut. |
title_loc_args |
Opsional, array JSON sebagai string |
Nilai string variabel yang akan digunakan sebagai pengganti penentu format dalam
Lihat Pengaturan Format dan Gaya untuk informasi lebih lanjut. |
Parameter | Penggunaan | Deskripsi |
---|---|---|
title |
Opsional, string |
Judul notifikasi. |
body |
Opsional, string |
Teks isi notifikasi. |
icon |
Opsional, string |
URL yang akan digunakan untuk ikon notifikasi. |
click_action |
Opsional, string |
Tindakan yang terkait dengan klik pengguna pada notifikasi. Untuk semua nilai URL, diperlukan HTTPS. |
Menafsirkan respons pesan XMPP downstream
Tabel berikut berisi daftar kolom yang muncul dalam respons pesan XMPP downstream.
Parameter | Penggunaan | Deskripsi |
---|---|---|
from |
Wajib, string | Parameter ini menetapkan siapa yang mengirim respons ini. Nilainya adalah token pendaftaran aplikasi klien. |
message_id |
Wajib, string | Parameter ini secara unik mengidentifikasi pesan dalam koneksi XMPP. Nilainya adalah string yang secara unik mengidentifikasi pesan yang terkait. |
message_type |
Wajib, string | Parameter ini menentukan pesan Jika nilainya disetel ke |
error |
Opsional, string | Parameter ini menetapkan error yang terkait dengan pesan downstream. Ini ditetapkan ketika
message_type adalah nack . Lihat tabel 4 untuk detailnya. |
error_description |
Opsional, string | Parameter ini menyediakan informasi deskriptif untuk error. Ini ditetapkan ketika message_type adalah nack . |
Kode respons error untuk pesan downstream
Tabel berikut berisi daftar kode respons error untuk pesan downstream.
Error | Kode XMPP | Tindakan yang disarankan |
---|---|---|
Token Pendaftaran Hilang | INVALID_JSON |
Periksa apakah permintaan memuat token pendaftaran (pada registration_id dalam pesan teks biasa, atau pada kolom to atau registration_ids dalam JSON). |
Pendaftaran APN Tidak Valid | INVALID_JSON |
Untuk pendaftaran iOS, pastikan permintaan pendaftaran dari klien berisi token APN dan ID aplikasi yang valid. |
Token Pendaftaran Tidak Valid | BAD_REGISTRATION |
Periksa format token pendaftaran yang Anda teruskan ke server. Pastikan token tersebut sama dengan token pendaftaran yang diterima aplikasi klien ketika mendaftar ke FCM. Jangan memotong atau memasukkan karakter tambahan. |
Perangkat Tidak Terdaftar | DEVICE_UNREGISTERED |
Token pendaftaran yang ada bisa menjadi tidak valid dalam sejumlah skenario, termasuk:
|
Pengirim Tidak Cocok | SENDER_ID_MISMATCH |
Token pendaftaran terikat pada grup pengirim tertentu. Ketika aplikasi klien mendaftar ke FCM, aplikasi tersebut harus menetapkan pengirim mana saja yang diizinkan untuk mengirim pesan. Anda harus menggunakan salah satu ID pengirim tersebut ketika mengirim pesan ke aplikasi klien. Jika Anda beralih ke pengirim yang berbeda, token pendaftaran yang ada tidak akan berfungsi. |
JSON tidak valid | INVALID_JSON |
Pastikan pesan JSON diformat dengan benar dan berisi kolom yang valid (misalnya, memastikan bahwa jenis data yang diteruskan benar). |
Pesan Terlalu Besar | INVALID_JSON |
Pastikan ukuran total data payload yang disertakan dalam pesan tidak melebihi batas FCM, yaitu 4.096 byte untuk sebagian besar pesan atau 2.048 byte untuk pesan ke topik. Ini mencakup kunci dan nilainya. |
Kunci Data Tidak Valid | INVALID_JSON |
Pastikan data payload tidak berisi kunci (seperti from , gcm , atau nilai apa pun yang diawali dengan google ) yang digunakan secara internal oleh FCM. Perlu diperhatikan bahwa beberapa kata (misalnya collapse_key ) juga digunakan oleh FCM, tetapi diizinkan dalam payload. Dalam hal ini, nilai payload akan diganti oleh nilai FCM. |
Waktu untuk Aktif Tidak Valid | INVALID_JSON |
Pastikan nilai yang digunakan dalam time_to_live adalah bilangan bulat yang mewakili durasi dalam detik antara 0 dan 2.419.200 (4 minggu). |
Pesan ACK buruk | BAD_ACK |
Pastikan pesan ack diformat dengan benar sebelum mencoba ulang. Lihat tabel 6 untuk detailnya. |
Waktu habis | SERVICE_UNAVAILABLE |
Server tidak bisa memproses permintaan secara tepat waktu. Coba lagi permintaan yang sama, tetapi Anda harus:
Catatan: Pengirim yang menyebabkan masalah berisiko dimasukkan ke daftar hitam. |
Error Server Internal | INTERNAL_SERVER_
|
Server mengalami error ketika mencoba memproses permintaan. Anda bisa mencoba lagi permintaan yang sama sesuai persyaratan yang tercantum dalam "Waktu Tunggu" (lihat baris di atas). |
Tingkat Pengiriman Pesan ke Perangkat Terlampaui | DEVICE_MESSAGE_RATE |
Tingkat pengiriman pesan ke perangkat tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim ke perangkat ini, dan jangan langsung mencoba mengirimkan pesan lagi ke perangkat ini. |
Tingkat Pengiriman Pesan Topik Terlampaui | TOPICS_MESSAGE_RATE |
Tingkat pengiriman pesan ke pelanggan topik tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim ke topik ini, dan jangan langsung mencoba mengirimkan pesan lagi. |
Pengurasan Koneksi | CONNECTION_DRAINING |
Pesan tidak bisa diproses karena koneksi dikosongkan. Hal ini terjadi karena FCM perlu menutup koneksi secara berkala untuk melakukan load balancing. Coba lagi proses pesan tersebut melalui koneksi XMPP yang lain. |
Kredensial APN Tidak Valid | INVALID_APNS_CREDENTIAL |
Pesan yang ditargetkan ke perangkat iOS tidak bisa dikirim, karena kunci autentikasi APN yang diperlukan tidak diupload atau masa berlakunya sudah habis. Periksa validitas kredensial pengembangan dan produksi Anda. |
Autentikasi Gagal | AUTHENTICATION_FAILED |
Gagal melakukan autentikasi dengan layanan push eksternal. Pastikan Anda menggunakan sertifikat web push yang benar. |
Sintaksis pesan upstream
Pesan upstream adalah pesan yang dikirim oleh aplikasi klien ke server aplikasi. Saat ini, hanya XMPP yang mendukung pengiriman pesan upstream. Lihat dokumentasi untuk platform Anda guna mendapatkan informasi lebih lanjut mengenai cara mengirim pesan dari aplikasi klien.
Menafsirkan pesan XMPP upstream
Tabel berikut memberikan penjelasan tentang berbagai kolom di dalam stanza XMPP yang dihasilkan oleh FCM sebagai respons terhadap permintaan pesan upstream dari aplikasi klien.
Parameter | Penggunaan | Deskripsi |
---|---|---|
from |
Wajib, string | Parameter ini menetapkan siapa yang mengirim pesan. Nilainya adalah token pendaftaran aplikasi klien. |
category |
Wajib, string | Parameter ini menetapkan nama paket aplikasi dari aplikasi klien yang mengirim pesan. |
message_id |
Wajib, string | Parameter ini menetapkan ID unik pesan. |
data |
Opsional, string | Parameter ini menetapkan key-value pair payload pesan. |
Mengirim pesan ACK
Tabel berikut ini menjelaskan respons ACK yang diharapkan untuk dikirim oleh server aplikasi ke FCM sebagai respons terhadap pesan upstream yang diterima server aplikasi.
Parameter | Penggunaan | Deskripsi |
---|---|---|
to |
Wajib, string | Parameter ini menetapkan penerima pesan respons. Nilainya harus berupa token pendaftaran aplikasi klien yang mengirim pesan upstream. |
message_id |
Wajib, string | Parameter ini menetapkan untuk pesan mana respons tersebut ditujukan. Nilainya harus berupa nilai message_id dari pesan upstream yang sesuai. |
message_type |
Wajib, string | Parameter ini menentukan pesan ack dari server aplikasi ke CCS. Untuk pesan upstream, parameter ini harus selalu disetel ke ack . |
Pesan server FCM (XMPP)
Ini adalah pesan yang dikirim dari FCM ke server aplikasi. Berikut adalah jenis pesan utama yang dikirim FCM ke server aplikasi:
- Kontrol: Pesan buatan CCS ini menunjukkan bahwa tindakan diperlukan dari server aplikasi.
Tabel berikut menjelaskan kolom yang disertakan dalam pesan yang dikirim oleh CCS ke server aplikasi.
Parameter | Penggunaan | Deskripsi |
---|---|---|
Kolom umum | ||
message_type |
Wajib, string | Parameter ini menentukan jenis pesan: kontrol. Jika disetel ke |
control_type |
Opsional, string | Parameter ini menetapkan jenis pesan kontrol yang dikirim dari FCM. Saat ini, hanya |