Sumber: Pesan
Pesan untuk dikirim melalui Firebase Cloud Messaging Service.
Representasi JSON |
---|
{ "name": string, "data": { string: string, ... }, "notification": { object ( |
Bidang | |
---|---|
name | Keluaran Saja. Pengidentifikasi pesan yang dikirim, dalam format |
data | Hanya masukan. Payload kunci/nilai sewenang-wenang, yang harus dikodekan UTF-8. Kuncinya tidak boleh berupa kata yang dicadangkan ("dari", "tipe_pesan", atau kata apa pun yang dimulai dengan "google" atau "gcm"). Saat mengirim muatan yang hanya berisi bidang data ke perangkat iOS, hanya prioritas normal ( Sebuah objek yang berisi daftar |
notification | Hanya masukan. Templat notifikasi dasar untuk digunakan di semua platform. |
android | Hanya masukan. Opsi khusus Android untuk pesan yang dikirim melalui server koneksi FCM . |
webpush | Hanya masukan. Opsi protokol webpush . |
apns | Hanya masukan. Opsi khusus Layanan Pemberitahuan Push Apple . |
fcm_options | Hanya masukan. Templat untuk opsi fitur FCM SDK untuk digunakan di semua platform. |
target lapangan serikat pekerja. Diperlukan. Hanya masukan. Target untuk mengirim pesan ke. target hanya dapat berupa salah satu dari berikut ini: | |
token | Token pendaftaran untuk mengirim pesan. |
topic | Nama topik yang akan dikirimi pesan, misalnya "cuaca". Catatan: awalan "/topics/" tidak boleh diberikan. |
condition | Kondisi untuk mengirim pesan, misalnya "'foo' dalam topik && 'bar' dalam topik". |
Pemberitahuan
Templat notifikasi dasar untuk digunakan di semua platform.
Representasi JSON |
---|
{ "title": string, "body": string, "image": string } |
Bidang | |
---|---|
title | Judul notifikasi. |
body | Teks isi notifikasi. |
image | Berisi URL gambar yang akan diunduh ke perangkat dan ditampilkan dalam notifikasi. JPEG, PNG, BMP memiliki dukungan penuh di seluruh platform. GIF dan video animasi hanya berfungsi di iOS. WebP dan HEIF memiliki tingkat dukungan yang berbeda-beda di seluruh platform dan versi platform. Android memiliki batas ukuran gambar 1MB. Penggunaan kuota dan implikasi/biaya untuk menghosting gambar di Firebase Storage: https://firebase.google.com/pricing |
Konfigurasi Android
Opsi khusus Android untuk pesan yang dikirim melalui server koneksi FCM .
Representasi JSON |
---|
{ "collapse_key": string, "priority": enum ( |
Bidang | |
---|---|
collapse_key | Pengidentifikasi sekelompok pesan yang dapat diciutkan, sehingga hanya pesan terakhir yang terkirim saat pengiriman dapat dilanjutkan. Maksimal 4 kunci penciutan berbeda diperbolehkan pada waktu tertentu. |
priority | Prioritas pesan. Dapat mengambil nilai "normal" dan "tinggi". Untuk informasi lebih lanjut, lihat Menetapkan prioritas pesan . |
ttl | Berapa lama (dalam detik) pesan harus disimpan di penyimpanan FCM jika perangkat sedang offline. Waktu maksimum untuk hidup yang didukung adalah 4 minggu, dan nilai defaultnya adalah 4 minggu jika tidak disetel. Setel ke 0 jika ingin segera mengirim pesan. Dalam format JSON, tipe Durasi dikodekan sebagai string, bukan objek, dengan string diakhiri dengan akhiran "s" (menunjukkan detik) dan diawali dengan jumlah detik, dengan nanodetik dinyatakan sebagai pecahan detik. Misalnya, 3 detik dengan 0 nanodetik harus dikodekan dalam format JSON sebagai "3s", sedangkan 3 detik dan 1 nanodetik harus dinyatakan dalam format JSON sebagai "3.000000001s". Ttl akan dibulatkan ke bawah ke detik terdekat. Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
restricted_package_name | Nama paket aplikasi tempat token pendaftaran harus cocok untuk menerima pesan. |
data | Muatan kunci/nilai sewenang-wenang. Jika ada, ini akan menggantikan Sebuah objek yang berisi daftar |
notification | Pemberitahuan untuk dikirim ke perangkat Android. |
fcm_options | Opsi fitur yang disediakan oleh FCM SDK untuk Android. |
direct_boot_ok | Jika disetel ke true, pesan akan diizinkan untuk dikirim ke aplikasi saat perangkat berada dalam mode booting langsung. Lihat Mendukung mode Boot Langsung . |
Prioritas Pesan Android
Prioritas pesan untuk dikirim ke perangkat Android. Perhatikan bahwa prioritas ini adalah konsep FCM yang mengontrol kapan pesan dikirimkan. Lihat panduan FCM . Selain itu, Anda dapat menentukan prioritas tampilan notifikasi pada perangkat Android yang ditargetkan menggunakan AndroidNotification.NotificationPriority .
Enum | |
---|---|
NORMAL | Prioritas default untuk pesan data. Pesan prioritas normal tidak akan membuka koneksi jaringan pada perangkat yang sedang tidur, dan pengirimannya mungkin tertunda untuk menghemat baterai. Untuk pesan yang tidak terlalu sensitif terhadap waktu, seperti pemberitahuan email baru atau data lain yang akan disinkronkan, pilih prioritas pengiriman normal. |
HIGH | Prioritas default untuk pesan notifikasi. FCM berupaya mengirimkan pesan berprioritas tinggi dengan segera, sehingga layanan FCM dapat membangunkan perangkat yang tertidur bila memungkinkan dan membuka koneksi jaringan ke server aplikasi Anda. Aplikasi dengan pesan instan, chat, atau peringatan panggilan suara, misalnya, umumnya perlu membuka koneksi jaringan dan memastikan FCM mengirimkan pesan ke perangkat tanpa penundaan. Tetapkan prioritas tinggi jika pesan bersifat mendesak dan memerlukan interaksi langsung dari pengguna, namun berhati-hatilah karena menetapkan pesan Anda ke prioritas tinggi akan menyebabkan lebih banyak pengurasan baterai dibandingkan dengan pesan prioritas normal. |
Pemberitahuan Android
Pemberitahuan untuk dikirim ke perangkat Android.
Representasi JSON |
---|
{ "title": string, "body": string, "icon": string, "color": string, "sound": string, "tag": string, "click_action": string, "body_loc_key": string, "body_loc_args": [ string ], "title_loc_key": string, "title_loc_args": [ string ], "channel_id": string, "ticker": string, "sticky": boolean, "event_time": string, "local_only": boolean, "notification_priority": enum ( |
Bidang | |
---|---|
title | Judul notifikasi. Jika ada, ini akan menggantikan |
body | Teks isi notifikasi. Jika ada, ini akan menggantikan |
icon | Ikon notifikasi. Menyetel ikon notifikasi ke myicon untuk myicon resource drawable. Jika Anda tidak mengirimkan kunci ini dalam permintaan, FCM akan menampilkan ikon peluncur yang ditentukan dalam manifes aplikasi Anda. |
color | Warna ikon notifikasi, dinyatakan dalam format #rrggbb. |
sound | Suara yang diputar saat perangkat menerima notifikasi. Mendukung "default" atau nama file sumber suara yang disertakan dalam aplikasi. File suara harus berada di /res/raw/. |
tag | Pengenal digunakan untuk menggantikan notifikasi yang ada di panel samping notifikasi. Jika tidak ditentukan, setiap permintaan akan membuat notifikasi baru. Jika ditentukan dan notifikasi dengan tag yang sama sudah ditampilkan, notifikasi baru akan menggantikan notifikasi yang sudah ada di panel samping notifikasi. |
click_action | Tindakan yang terkait dengan pengguna mengklik notifikasi. Jika ditentukan, aktivitas dengan filter maksud yang cocok akan diluncurkan saat pengguna mengklik notifikasi. |
body_loc_key | Kunci string isi dalam sumber daya string aplikasi yang digunakan untuk melokalkan teks isi ke pelokalan pengguna saat ini. Lihat Sumber Daya String untuk informasi lebih lanjut. |
body_loc_args[] | Nilai string variabel yang akan digunakan sebagai pengganti penentu format di body_loc_key yang akan digunakan untuk melokalisasi teks isi ke pelokalan pengguna saat ini. Lihat Pemformatan dan Penataan Gaya untuk informasi lebih lanjut. |
title_loc_key | Kunci string judul dalam sumber daya string aplikasi yang digunakan untuk melokalkan teks judul ke lokalisasi pengguna saat ini. Lihat Sumber Daya String untuk informasi lebih lanjut. |
title_loc_args[] | Nilai string variabel yang akan digunakan sebagai pengganti penentu format di title_loc_key yang akan digunakan untuk melokalisasi teks judul ke lokalisasi pengguna saat ini. Lihat Pemformatan dan Penataan Gaya untuk informasi lebih lanjut. |
channel_id | ID saluran notifikasi (baru di Android O). Aplikasi harus membuat saluran dengan ID saluran ini sebelum pemberitahuan apa pun dengan ID saluran ini diterima. Jika Anda tidak mengirimkan ID saluran ini dalam permintaan, atau jika ID saluran yang diberikan belum dibuat oleh aplikasi, FCM akan menggunakan ID saluran yang ditentukan dalam manifes aplikasi. |
ticker | Menyetel teks "ticker", yang dikirim ke layanan aksesibilitas. Sebelum API level 21 ( |
sticky | Jika disetel ke salah atau tidak disetel, notifikasi otomatis ditutup saat pengguna mengkliknya di panel. Jika disetel ke true, notifikasi tetap ada meskipun pengguna mengkliknya. |
event_time | Atur waktu terjadinya peristiwa dalam notifikasi. Notifikasi di panel diurutkan berdasarkan waktu ini. Suatu titik waktu direpresentasikan menggunakan protobuf.Timestamp . Stempel waktu dalam format RFC3339 UTC "Zulu", dengan resolusi nanodetik dan hingga sembilan digit pecahan. Contoh: |
local_only | Setel apakah notifikasi ini hanya relevan untuk perangkat saat ini atau tidak. Beberapa notifikasi dapat dihubungkan ke perangkat lain untuk tampilan jarak jauh, seperti jam tangan Wear OS. Petunjuk ini dapat diatur untuk merekomendasikan agar notifikasi ini tidak dijembatani. Lihat panduan Wear OS |
notification_priority | Tetapkan prioritas relatif untuk notifikasi ini. Prioritas merupakan indikasi seberapa banyak perhatian pengguna yang harus dikonsumsi oleh notifikasi ini. Notifikasi berprioritas rendah mungkin disembunyikan dari pengguna dalam situasi tertentu, sementara pengguna mungkin terganggu untuk notifikasi berprioritas lebih tinggi. Pengaruh penetapan prioritas yang sama mungkin sedikit berbeda pada platform yang berbeda. Perhatikan bahwa prioritas ini berbeda dengan |
default_sound | Jika disetel ke true, gunakan suara default framework Android untuk notifikasi. Nilai default ditentukan di config.xml . |
default_vibrate_timings | Jika disetel ke true, gunakan pola getar default framework Android untuk notifikasi. Nilai default ditentukan di config.xml . Jika |
default_light_settings | Jika disetel ke true, gunakan setelan lampu LED default framework Android untuk notifikasi. Nilai default ditentukan di config.xml . Jika |
vibrate_timings[] | Atur pola getaran yang akan digunakan. Masukkan array protobuf.Duration untuk menghidupkan atau mematikan vibrator. Nilai pertama menunjukkan Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
visibility | Atur Notifikasi . visibilitas notifikasi. |
notification_count | Menetapkan jumlah item yang diwakili oleh notifikasi ini. Dapat ditampilkan sebagai jumlah lencana untuk peluncur yang mendukung pemberian lencana. Lihat Lencana Pemberitahuan . Misalnya, ini mungkin berguna jika Anda hanya menggunakan satu notifikasi untuk mewakili beberapa pesan baru, namun Anda ingin penghitungan di sini mewakili jumlah total pesan baru. Jika nol atau tidak ditentukan, sistem yang mendukung badge menggunakan default, yaitu menambah angka yang ditampilkan pada menu tekan lama setiap kali ada notifikasi baru yang masuk. |
light_settings | Pengaturan untuk mengontrol kecepatan dan warna kedipan LED notifikasi jika LED tersedia di perangkat. Total waktu berkedip dikontrol oleh OS. |
image | Berisi URL gambar yang akan ditampilkan dalam notifikasi. Jika ada, ini akan menggantikan |
Prioritas Pemberitahuan
Tingkat prioritas pemberitahuan.
Enum | |
---|---|
PRIORITY_UNSPECIFIED | Jika prioritas tidak ditentukan, prioritas notifikasi disetel ke PRIORITY_DEFAULT . |
PRIORITY_MIN | Prioritas notifikasi terendah. Notifikasi dengan PRIORITY_MIN ini mungkin tidak ditampilkan kepada pengguna kecuali dalam keadaan khusus, seperti log notifikasi mendetail. |
PRIORITY_LOW | Prioritas notifikasi lebih rendah. UI dapat memilih untuk menampilkan notifikasi dengan ukuran lebih kecil, atau pada posisi berbeda dalam daftar, dibandingkan dengan notifikasi dengan PRIORITY_DEFAULT . |
PRIORITY_DEFAULT | Prioritas pemberitahuan default. Jika aplikasi tidak memprioritaskan notifikasinya sendiri, gunakan nilai ini untuk semua notifikasi. |
PRIORITY_HIGH | Prioritas notifikasi lebih tinggi. Gunakan ini untuk pemberitahuan atau peringatan yang lebih penting. UI dapat memilih untuk menampilkan notifikasi ini lebih besar, atau pada posisi berbeda dalam daftar notifikasi, dibandingkan dengan notifikasi dengan PRIORITY_DEFAULT . |
PRIORITY_MAX | Prioritas notifikasi tertinggi. Gunakan ini untuk item terpenting dalam aplikasi yang memerlukan perhatian atau masukan cepat dari pengguna. |
Visibilitas
Tingkat visibilitas notifikasi yang berbeda.
Enum | |
---|---|
VISIBILITY_UNSPECIFIED | Jika tidak ditentukan, defaultnya adalah Visibility.PRIVATE . |
PRIVATE | Tampilkan pemberitahuan ini di semua layar kunci, namun sembunyikan informasi sensitif atau pribadi di layar kunci yang aman. |
PUBLIC | Tampilkan notifikasi ini secara keseluruhan di semua layar kunci. |
SECRET | Jangan tampilkan bagian apa pun dari pemberitahuan ini di layar kunci yang aman. |
Pengaturan Cahaya
Pengaturan untuk mengontrol LED notifikasi.
Representasi JSON |
---|
{
"color": {
object ( |
Bidang | |
---|---|
color | Diperlukan. Atur |
light_on_duration | Diperlukan. Bersamaan dengan Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
light_off_duration | Diperlukan. Bersamaan dengan Durasi dalam detik hingga sembilan digit pecahan, diakhiri dengan ' |
Warna
Mewakili warna dalam ruang warna RGBA. Representasi ini dirancang untuk kesederhanaan konversi ke/dari representasi warna dalam berbagai bahasa dibandingkan kekompakan. Misalnya, bidang representasi ini dapat dengan mudah diberikan kepada konstruktor java.awt.Color
di Java; itu juga dapat dengan mudah diberikan ke metode +colorWithRed:green:blue:alpha
UIColor di iOS; dan, hanya dengan sedikit usaha, ini dapat dengan mudah diformat menjadi string CSS rgba()
di JavaScript.
Halaman referensi ini tidak memuat informasi tentang ruang warna absolut yang harus digunakan untuk menafsirkan nilai RGB (misalnya sRGB, Adobe RGB, DCI-P3, BT.2020, dll.). Secara default, aplikasi harus menggunakan ruang warna sRGB.
Ketika kesetaraan warna perlu diputuskan, implementasi, kecuali jika didokumentasikan sebaliknya, memperlakukan dua warna sebagai sama jika semua nilai merah, hijau, biru, dan alfa masing-masing berbeda paling banyak 1e-5.
Contoh (Jawa):
import com.google.type.Color;
// ...
public static java.awt.Color fromProto(Color protocolor) {
float alpha = protocolor.hasAlpha()
? protocolor.getAlpha().getValue()
: 1.0;
return new java.awt.Color(
protocolor.getRed(),
protocolor.getGreen(),
protocolor.getBlue(),
alpha);
}
public static Color toProto(java.awt.Color color) {
float red = (float) color.getRed();
float green = (float) color.getGreen();
float blue = (float) color.getBlue();
float denominator = 255.0;
Color.Builder resultBuilder =
Color
.newBuilder()
.setRed(red / denominator)
.setGreen(green / denominator)
.setBlue(blue / denominator);
int alpha = color.getAlpha();
if (alpha != 255) {
result.setAlpha(
FloatValue
.newBuilder()
.setValue(((float) alpha) / denominator)
.build());
}
return resultBuilder.build();
}
// ...
Contoh (iOS/Obj-C):
// ...
static UIColor* fromProto(Color* protocolor) {
float red = [protocolor red];
float green = [protocolor green];
float blue = [protocolor blue];
FloatValue* alpha_wrapper = [protocolor alpha];
float alpha = 1.0;
if (alpha_wrapper != nil) {
alpha = [alpha_wrapper value];
}
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
static Color* toProto(UIColor* color) {
CGFloat red, green, blue, alpha;
if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
return nil;
}
Color* result = [[Color alloc] init];
[result setRed:red];
[result setGreen:green];
[result setBlue:blue];
if (alpha <= 0.9999) {
[result setAlpha:floatWrapperWithValue(alpha)];
}
[result autorelease];
return result;
}
// ...
Contoh (JavaScript):
// ...
var protoToCssColor = function(rgb_color) {
var redFrac = rgb_color.red || 0.0;
var greenFrac = rgb_color.green || 0.0;
var blueFrac = rgb_color.blue || 0.0;
var red = Math.floor(redFrac * 255);
var green = Math.floor(greenFrac * 255);
var blue = Math.floor(blueFrac * 255);
if (!('alpha' in rgb_color)) {
return rgbToCssColor(red, green, blue);
}
var alphaFrac = rgb_color.alpha.value || 0.0;
var rgbParams = [red, green, blue].join(',');
return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
};
var rgbToCssColor = function(red, green, blue) {
var rgbNumber = new Number((red << 16) | (green << 8) | blue);
var hexString = rgbNumber.toString(16);
var missingZeros = 6 - hexString.length;
var resultBuilder = ['#'];
for (var i = 0; i < missingZeros; i++) {
resultBuilder.push('0');
}
resultBuilder.push(hexString);
return resultBuilder.join('');
};
// ...
Representasi JSON |
---|
{ "red": number, "green": number, "blue": number, "alpha": number } |
Bidang | |
---|---|
red | Jumlah warna merah sebagai nilai dalam interval [0, 1]. |
green | Banyaknya warna hijau pada warna sebagai nilai dalam interval [0, 1]. |
blue | Banyaknya warna biru dalam warna sebagai nilai dalam interval [0, 1]. |
alpha | Fraksi warna ini yang harus diterapkan pada piksel. Artinya, warna piksel akhir ditentukan oleh persamaan: Artinya, nilai 1,0 berarti warna solid, sedangkan nilai 0,0 berarti warna transparan sepenuhnya. Ini menggunakan pesan pembungkus daripada skalar float sederhana sehingga memungkinkan untuk membedakan antara nilai default dan nilai yang tidak disetel. Jika dihilangkan, objek warna ini akan ditampilkan sebagai warna solid (seolah-olah nilai alpha secara eksplisit diberi nilai 1,0). |
Opsi AndroidFcm
Opsi fitur yang disediakan oleh FCM SDK untuk Android.
Representasi JSON |
---|
{ "analytics_label": string } |
Bidang | |
---|---|
analytics_label | Label yang terkait dengan data analisis pesan. |
Konfigurasi Webpush
Opsi protokol webpush .
Representasi JSON |
---|
{
"headers": {
string: string,
...
},
"data": {
string: string,
...
},
"notification": {
object
},
"fcm_options": {
object ( |
Bidang | |
---|---|
headers | Header HTTP ditentukan dalam protokol webpush. Lihat protokol Webpush untuk header yang didukung, misalnya "TTL": "15". Sebuah objek yang berisi daftar |
data | Muatan kunci/nilai sewenang-wenang. Jika ada, ini akan menggantikan Sebuah objek yang berisi daftar |
notification | Opsi Pemberitahuan Web sebagai objek JSON. Mendukung properti instance Notifikasi seperti yang ditentukan dalam API Notifikasi Web . Jika ada, kolom "title" dan "body" akan menggantikan |
fcm_options | Opsi untuk fitur yang disediakan oleh FCM SDK untuk Web. |
Opsi WebpushFcm
Opsi untuk fitur yang disediakan oleh FCM SDK untuk Web.
Representasi JSON |
---|
{ "link": string, "analytics_label": string } |
Bidang | |
---|---|
link | Tautan yang akan terbuka ketika pengguna mengklik notifikasi. Untuk semua nilai URL, HTTPS diperlukan. |
analytics_label | Label yang terkait dengan data analisis pesan. |
Konfigurasi Apns
Opsi khusus Layanan Pemberitahuan Push Apple .
Representasi JSON |
---|
{
"headers": {
string: string,
...
},
"payload": {
object
},
"fcm_options": {
object ( |
Bidang | |
---|---|
headers | Header permintaan HTTP ditentukan di Layanan Pemberitahuan Push Apple. Lihat header permintaan APN untuk header yang didukung seperti Backend menetapkan nilai default untuk Sebuah objek yang berisi daftar |
payload | Payload APN sebagai objek JSON, termasuk kamus |
fcm_options | Opsi untuk fitur yang disediakan oleh FCM SDK untuk iOS. |
Opsi ApnsFcm
Opsi untuk fitur yang disediakan oleh FCM SDK untuk iOS.
Representasi JSON |
---|
{ "analytics_label": string, "image": string } |
Bidang | |
---|---|
analytics_label | Label yang terkait dengan data analisis pesan. |
image | Berisi URL gambar yang akan ditampilkan dalam notifikasi. Jika ada, ini akan menggantikan |
Opsi Fcm
Opsi independen platform untuk fitur yang disediakan oleh FCM SDK.
Representasi JSON |
---|
{ "analytics_label": string } |
Bidang | |
---|---|
analytics_label | Label yang terkait dengan data analisis pesan. |
Metode | |
---|---|
| Kirim pesan ke target tertentu (token pendaftaran, topik atau ketentuan). |