Dokumen ini menyediakan referensi untuk sintaksis HTTP yang digunakan untuk meneruskan pesan dari server aplikasi Anda ke aplikasi klien melalui Firebase Cloud Messaging.
Saat menggunakan protokol HTTP lama, server aplikasi Anda harus mengarahkan semua permintaan HTTP ke endpoint ini:
https://fcm.googleapis.com/fcm/send
Parameter dan opsi yang tersedia tercakup ke dalam dua kategori besar berikut ini:
Sintaksis pesan downstream
Bagian ini memberikan sintaksis untuk mengirim pesan downstream dan menafsirkan Respons HTTP dari Firebase Cloud Messaging.
Pesan HTTP downstream (JSON)
Tabel berikut ini berisi daftar target, opsi, dan payload untuk pesan HTTP JSON.
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
|
|
registration_ids | Opsional, array string |
Parameter ini menentukan penerima pesan multicast, yakni pesan yang dikirim ke lebih dari satu token pendaftaran.
Nilainya harus berupa array token pendaftaran yang akan menjadi tujuan pengiriman pesan multicast. Array harus memuat minimal 1 dan maksimal 1.000 token pendaftaran. Untuk mengirim pesan ke satu perangkat, gunakan parameter Pesan multicast hanya diperbolehkan menggunakan format HTTP JSON. |
|
condition |
Opsional, string | Parameter ini menetapkan ekspresi logis kondisi yang menentukan target pesan. Kondisi yang didukung: Topik, yang diformat sebagai "'yourTopic' in topic". Nilai ini tidak peka huruf besar/kecil. Operator yang didukung: |
|
notification_key Tidak digunakan lagi |
Opsional, string | Parameter ini tidak digunakan lagi. Sebaliknya, gunakan |
|
Opsi | |||
collapse_key |
Opsional, string | Parameter ini mengidentifikasi grup pesan (misalnya, dengan Perlu diperhatikan bahwa urutan pesan yang akan dikirim tidak dijamin. 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 | Pada 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. |
|
restricted_package_
(Khusus Android) |
Opsional, string | Parameter ini menetapkan nama paket aplikasi yang harus sesuai dengan token pendaftaran agar bisa menerima pesan. | |
dry_run |
Opsional, boolean | Jika disetel ke Nilai defaultnya adalah |
|
Payload | |||
data |
Opsional, objek | Parameter ini menetapkan key-value pair kustom pada payload pesan. Misalnya, dengan Pada platform Apple, jika pesan dikirim melalui APN, pesan tersebut mewakili kolom data kustom. Jika dikirim melalui FCM, pesan akan direpresentasikan sebagai kamus nilai kunci dalam Pada Android, ini akan menghasilkan ekstra 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 setelan awal yang terlihat oleh pengguna pada payload notifikasi. Lihat Dukungan payload notifikasi untuk mengetahui detailnya.
Untuk 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 yang telah ditetapkan sebelumnya yang tersedia untuk mem-build pesan notifikasi untuk iOS 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 untuk 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, HTTPS diwajibkan. |
Pesan HTTP downstream (Teks Biasa)
Tabel berikut berisi daftar sintaksis untuk target, opsi, dan payload dalam pesan HTTP downstream teks biasa.
Parameter | Penggunaan | Deskripsi |
---|---|---|
Target | ||
registration_id |
Wajib, string | Parameter ini menetapkan aplikasi klien (token pendaftaran) yang menerima pesan. Pengiriman pesan multicast (mengirim ke lebih dari 1 token pendaftaran) hanya diizinkan menggunakan format HTTP JSON. |
Opsi | ||
collapse_key |
Opsional, string | Lihat tabel 1 untuk detailnya. |
time_to_live |
Opsional, angka | Lihat tabel 1 untuk detailnya. |
restricted_package_name |
Opsional, string | Lihat tabel 1 untuk detailnya. |
dry_run |
Opsional, boolean | Lihat tabel 1 untuk detailnya. |
Payload | ||
data.<key> |
Opsional, string | Parameter ini menetapkan key-value pair payload pesan. Tidak ada batas jumlah pada parameter nilai kunci, tetapi ada batas ukuran pesan total sebesar 4.096 byte. Misalnya, pada Android, 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 |
Menafsirkan respons pesan downstream
Server aplikasi harus mengevaluasi header respons atau isi pesan untuk menafsirkan respons pesan yang dikirim dari FCM. Tabel berikut menjelaskan kemungkinan respons.
Respons | Deskripsi |
---|---|
200 | Pesan berhasil diproses. Isi respons akan berisi detail lebih lanjut tentang status pesan, tetapi formatnya akan bergantung pada apakah permintaannya JSON atau teks biasa. Lihat tabel 5 untuk informasi selengkapnya. |
400 | Hanya berlaku untuk permintaan JSON. Menunjukkan bahwa permintaan tersebut tidak dapat diurai sebagai JSON, atau permintaan tersebut berisi kolom tidak valid (misalnya, meneruskan string padahal seharusnya angka). Penyebab pasti kegagalan dijelaskan dalam respons, dan masalah tersebut harus ditangani sebelum permintaan dapat dicoba lagi. |
401 | Terjadi error saat mengautentikasi akun pengirim. |
5xx | Error dalam rentang 500-599 (misalnya 500 atau 503) menunjukkan bahwa ada error internal dalam server koneksi FCM saat mencoba memproses permintaan, atau server untuk sementara tidak tersedia (misalnya, karena waktu tunggu). Pengirim harus mencoba lagi nanti, dengan mematuhi header Retry-After apa pun yang termasuk dalam respons. Server aplikasi harus mengimplementasikan backoff eksponensial. |
Tabel berikut berisi daftar kolom dalam isi respons pesan downstream (JSON).
Parameter | Penggunaan | Deskripsi |
---|---|---|
multicast_id |
Wajib, angka | ID unik (angka) yang mengidentifikasi pesan multicast. |
success |
Wajib, angka | Jumlah pesan yang diproses tanpa error. |
failure |
Wajib, angka | Jumlah pesan yang tidak bisa diproses. |
results |
Wajib, array objek | Array objek yang mewakili status pesan yang diproses. Objek tersebut tercantum dalam urutan yang sama dengan permintaan (misalnya, untuk setiap ID pendaftaran dalam permintaan, hasilnya dicantumkan dalam indeks yang sama dalam respons).
|
Parameter | Penggunaan | Deskripsi |
---|---|---|
message_id |
Opsional, angka | ID pesan topik ketika FCM telah berhasil menerima permintaan dan akan mencoba mengirimkannya ke semua perangkat yang berlangganan. |
error |
Opsional, string | Error yang terjadi ketika memproses pesan. Kemungkinan nilai dapat dilihat di tabel 9. |
Parameter | Penggunaan | Deskripsi |
---|---|---|
id |
Wajib, string | Parameter ini menetapkan ID pesan unik yang berhasil diproses oleh FCM. |
registration_id |
Opsional, string | Parameter ini menetapkan token pendaftaran untuk aplikasi klien tempat pemrosesan dan tujuan pengiriman pesan. |
Parameter | Penggunaan | Deskripsi |
---|---|---|
Error |
Wajib, string | Parameter ini menetapkan nilai error ketika memproses pesan untuk penerima. Lihat tabel 9 untuk detailnya. |
Kode respons error untuk pesan downstream
Tabel berikut berisi daftar kode respons error untuk pesan downstream.
Error | Kode HTTP | Tindakan yang Disarankan |
---|---|---|
Token Pendaftaran Hilang | 200 + error:MissingRegistration | Periksa apakah permintaan memuat token pendaftaran (pada registration_id dalam pesan teks biasa, atau pada kolom to atau registration_ids dalam JSON). |
Token Pendaftaran Tidak Valid | 200 + error:InvalidRegistration | Periksa format token pendaftaran yang Anda teruskan ke server. Pastikan format tersebut cocok dengan token pendaftaran yang diterima oleh aplikasi klien ketika mendaftar ke Firebase Notifications. Jangan potong atau tambahi dengan karakter ekstra. |
Perangkat Tidak Terdaftar | 200 + error:NotRegistered | Token pendaftaran yang ada bisa menjadi tidak valid dalam sejumlah skenario, termasuk:
|
Nama Paket Tidak Valid | 200 + error:InvalidPackageName | Pastikan bahwa pesan ditujukan ke token pendaftaran yang nama paketnya cocok dengan nilai yang diteruskan dalam permintaan. |
Kesalahan Autentikasi | 401 | Akun pengirim yang digunakan untuk mengirim pesan tidak bisa diautentikasi. Kemungkinan penyebabnya sebagai berikut:
|
Pengirim Tidak Cocok | 200 + error:MismatchSenderId | 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 | 400 | Pastikan pesan JSON diformat dengan benar dan berisi kolom yang valid (misalnya, memastikan bahwa jenis data yang diteruskan benar). |
Parameter Tidak Valid | 400 + error:InvalidParameters | Pastikan parameter yang dimasukkan memiliki nama dan jenis yang tepat. |
Pesan Terlalu Besar | 200 + error:MessageTooBig | Pastikan ukuran total data payload yang disertakan dalam pesan tidak melebihi batas FCM, yaitu 4.096 byte untuk kebanyakan pesan, atau 2.048 byte untuk pesan ke topik. Ini mencakup kunci dan nilainya. |
Kunci Data Tidak Valid | 200 + error: InvalidDataKey |
Pastikan data payload tidak memuat kunci (misalnya from atau 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, yang dalam hal ini nilai payload akan diganti oleh nilai FCM. |
Waktu untuk Aktif Tidak Valid | 200 + error:InvalidTtl | Pastikan nilai yang digunakan dalam time_to_live adalah bilangan bulat yang mewakili durasi dalam detik antara 0 dan 2.419.200 (4 minggu). |
Waktu habis | 5xx atau 200 + error:Unavailable | Server tidak bisa memproses permintaan secara tepat waktu. Coba lagi permintaan yang sama, tetapi Anda harus:
Pengirim yang menyebabkan masalah berisiko dimasukkan ke daftar hitam. |
Error Server Internal | 500 atau 200 + error:InternalServerError | 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). Jika error tetap berlanjut, hubungi dukungan Firebase. |
Rasio Pesan-Perangkat Terlampaui | 200 + error: DeviceMessageRate Exceeded |
Rasio pesan terhadap perangkat tertentu terlalu tinggi. Jika aplikasi Apple mengirim pesan dengan jumlah yang melebihi batas APN, pesan error ini mungkin akan ditampilkan. Kurangi jumlah pesan yang dikirim ke perangkat ini dan gunakan backoff eksponensial untuk mencoba mengirimkan pesan lagi. |
Rasio Pesan-Topik Terlampaui | 200 + error: TopicsMessageRate Exceeded |
Rasio pesan terhadap pelanggan topik tertentu terlalu tinggi. Kurangi jumlah pesan yang dikirim untuk topik ini dan gunakan backoff eksponensial untuk mencoba mengirimkan pesan lagi. |
Kredensial APN Tidak Valid | 200 + error:
InvalidApnsCredential |
Pesan yang ditargetkan ke perangkat Apple tidak bisa dikirim, karena kunci autentikasi APN yang diperlukan tidak diupload atau tidak berlaku lagi. Periksa validitas kredensial pengembangan dan produksi Anda. |
Pengelolaan grup perangkat
Tabel berikut ini berisi kunci untuk membuat grup perangkat dan menambah serta menghapus anggota. Untuk mengetahui informasi selengkapnya, baca panduan untuk platform Anda, iOS+ atau Android.
Parameter | Penggunaan | Deskripsi |
---|---|---|
operation |
Wajib, string | Operasi yang akan dijalankan. Nilai yang valid adalah create , add , dan remove . |
notification_key_name |
Wajib, string | Nama grup perangkat buatan pengguna yang bisa dibuat atau diubah. |
notification_key |
Wajib (kecuali untuk operasi create ), string |
ID unik untuk grup perangkat. Nilai ini ditampilkan sebagai respons untuk operasi create yang berhasil, dan diperlukan untuk semua operasi berikutnya pada grup perangkat. |
registration_ids |
Opsional, array string | Token perangkat yang akan ditambahkan atau dihapus. Jika Anda menghapus semua token pendaftaran yang ada dari grup perangkat, FCM akan menghapus grup perangkat tersebut. |