Firebase Admin SDK dan FCM v1 HTTP API memungkinkan permintaan pesan Anda menetapkan semua kolom yang tersedia di objek message
. Hal ini
mencakup:
- sekumpulan kolom umum untuk ditafsirkan oleh semua instance aplikasi yang menerima pesan tersebut.
- kumpulan kolom khusus platform, seperti
AndroidConfig
danWebpushConfig
, yang hanya ditafsirkan oleh instance aplikasi yang berjalan pada platform yang ditentukan.
Blok khusus platform memberi Anda fleksibilitas dalam menyesuaikan pesan untuk berbagai platform, guna memastikan pesan ditangani dengan benar saat diterima. Backend FCM akan mempertimbangkan semua parameter yang telah ditentukan dan menyesuaikan pesan untuk setiap platform.
Kapan kolom umum digunakan
Gunakan kolom umum saat Anda:
- Mengirim kolom ke platform mana pun
- Mengirim pesan ke topik
Semua instance aplikasi, dari platform apa saja, dapat menafsirkan kolom umum berikut:
Kapan kolom khusus platform digunakan
Gunakan kolom khusus platform ketika Anda ingin:
- Mengirim kolom hanya ke platform tertentu
- Mengirim kolom khusus platform bersama dengan kolom umum
Kapan pun Anda ingin mengirim nilai ke platform tertentu saja, gunakan kolom khusus platform. Misalnya, untuk mengirim notifikasi hanya ke platform Apple dan Web, tetapi tidak ke Android, Anda harus menggunakan dua kumpulan kolom terpisah, yaitu satu untuk Apple dan satu lagi untuk Web.
Saat Anda mengirim pesan dengan opsi pengiriman tertentu, gunakan kolom khusus platform untuk menetapkannya. Anda dapat menentukan beragam nilai untuk setiap platform jika mau. Namun, meskipun Anda ingin menetapkan nilai yang sama pada platform yang berbeda, Anda harus menggunakan kolom khusus platform. Hal ini karena setiap platform mungkin menafsirkan nilai dengan sedikit berbeda. Misalnya, waktu aktif ditetapkan di Android sebagai waktu habis masa berlaku dalam hitungan detik, sedangkan di Apple ditetapkan sebagai tanggal habis masa berlaku.
Pesan notifikasi dengan opsi pengiriman khusus platform
Permintaan kirim HTTP v1 API berikut mengirimkan judul dan konten notifikasi umum ke semua platform, serta mengirimkan beberapa penggantian khusus platform. Secara khusus, permintaan:
- menetapkan time to live yang lama untuk platform Android dan Web, sekaligus menetapkan prioritas pesan APN (platform Apple) ke setelan rendah
- menetapkan kunci yang sesuai untuk menentukan hasil ketukan pengguna pada
notifikasi di Android dan Apple —
click_action
, dancategory
, masing-masing.
{
"message":{
"token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification":{
"title":"Match update",
"body":"Arsenal goal in added time, score is now 3-0"
},
"android":{
"ttl":"86400s",
"notification"{
"click_action":"OPEN_ACTIVITY_1"
}
},
"apns": {
"headers": {
"apns-priority": "5",
},
"payload": {
"aps": {
"category": "NEW_MESSAGE_CATEGORY"
}
}
},
"webpush":{
"headers":{
"TTL":"86400"
}
}
}
}
Untuk mempelajari lebih lanjut, lihat halaman referensi HTTP v1 untuk mengetahui detail selengkapnya tentang kunci yang tersedia di blok khusus platform dalam isi pesan. Untuk mengetahui informasi selengkapnya tentang cara mem-build permintaan kirim yang berisi isi pesan, lihat Mengirim pesan menggunakan FCM HTTP v1 API.
Pesan notifikasi dengan opsi warna dan ikon
Dalam contoh berikut, permintaan kirim mengirimkan judul dan konten notifikasi yang sama ke semua platform, tetapi juga mengirimkan beberapa penggantian khusus platform ke perangkat Android.
Untuk Android, permintaan menetapkan ikon dan warna khusus untuk ditampilkan di perangkat Android. Seperti tercantum dalam referensi untuk AndroidNotification, warna ditentukan dalam format #rrggbb, dan gambar harus merupakan resource ikon drawable yang tersedia secara lokal untuk aplikasi Android.
Berikut adalah contoh efek visual pada perangkat pengguna:
Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: '`$FooCorp` up 1.43% on the day',
body: 'FooCorp gained 11.80 points to close at 835.67, up 1.43% on the day.'
},
android: {
notification: {
icon: 'stock_ticker_update',
color: '#7e55c3'
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
Java
Message message = Message.builder()
.setNotification(Notification.builder()
.setTitle("$GOOG up 1.43% on the day")
.setBody("$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.")
.build())
.setAndroidConfig(AndroidConfig.builder()
.setTtl(3600 * 1000)
.setNotification(AndroidNotification.builder()
.setIcon("stock_ticker_update")
.setColor("#f45342")
.build())
.build())
.setApnsConfig(ApnsConfig.builder()
.setAps(Aps.builder()
.setBadge(42)
.build())
.build())
.setTopic("industry-tech")
.build();
Python
message = messaging.Message(
notification=messaging.Notification(
title='$GOOG up 1.43% on the day',
body='$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.',
),
android=messaging.AndroidConfig(
ttl=datetime.timedelta(seconds=3600),
priority='normal',
notification=messaging.AndroidNotification(
icon='stock_ticker_update',
color='#f45342'
),
),
apns=messaging.APNSConfig(
payload=messaging.APNSPayload(
aps=messaging.Aps(badge=42),
),
),
topic='industry-tech',
)
Go
oneHour := time.Duration(1) * time.Hour
badge := 42
message := &messaging.Message{
Notification: &messaging.Notification{
Title: "$GOOG up 1.43% on the day",
Body: "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.",
},
Android: &messaging.AndroidConfig{
TTL: &oneHour,
Notification: &messaging.AndroidNotification{
Icon: "stock_ticker_update",
Color: "#f45342",
},
},
APNS: &messaging.APNSConfig{
Payload: &messaging.APNSPayload{
Aps: &messaging.Aps{
Badge: &badge,
},
},
},
Topic: "industry-tech",
}
C#
var message = new Message
{
Notification = new Notification()
{
Title = "$GOOG up 1.43% on the day",
Body = "$GOOG gained 11.80 points to close at 835.67, up 1.43% on the day.",
},
Android = new AndroidConfig()
{
TimeToLive = TimeSpan.FromHours(1),
Notification = new AndroidNotification()
{
Icon = "stock_ticker_update",
Color = "#f45342",
},
},
Apns = new ApnsConfig()
{
Aps = new Aps()
{
Badge = 42,
},
},
Topic = "industry-tech",
};
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic":"industry-tech",
"notification":{
"title": "`$FooCorp` up 1.43% on the day",
"body": "FooCorp gained 11.80 points to close at 835.67, up 1.43% on the day."
},
"android":{
"notification":{
"icon":"stock_ticker_update",
"color":"#7e55c3"
}
}
}
}
Untuk mempelajari lebih lanjut, lihat halaman referensi HTTP v1 untuk mengetahui detail selengkapnya tentang kunci yang tersedia di blok khusus platform dalam isi pesan.
Pesan notifikasi dengan gambar kustom
Permintaan kirim berikut tidak hanya mengirimkan judul notifikasi yang sama ke semua platform, tetapi juga mengirimkan gambar. Berikut adalah contoh efek visual pada perangkat pengguna:
Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Sparky says hello!'
},
android: {
notification: {
imageUrl: 'https://foo.bar.pizza-monster.png'
}
},
apns: {
payload: {
aps: {
'mutable-content': 1
}
},
fcm_options: {
image: 'https://foo.bar.pizza-monster.png'
}
},
webpush: {
headers: {
image: 'https://foo.bar.pizza-monster.png'
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1
Content-Type: application/json
Authorization: Bearer ya29.ElqKBGN2Ri_Uz...HnS_uNreA
{
"message":{
"topic":"industry-tech",
"notification":{
"title":"Sparky says hello!",
},
"android":{
"notification":{
"image":"https://foo.bar/pizza-monster.png"
}
},
"apns":{
"payload":{
"aps":{
"mutable-content":1
}
},
"fcm_options": {
"image":"https://foo.bar/pizza-monster.png"
}
},
"webpush":{
"headers":{
"image":"https://foo.bar/pizza-monster.png"
}
}
}
}
Untuk mempelajari lebih lanjut, lihat halaman referensi HTTP v1 untuk mengetahui detail selengkapnya tentang kunci yang tersedia di blok khusus platform dalam isi pesan.
Pesan notifikasi dengan tindakan klik terkait
Permintaan kirim berikut mengirimkan judul notifikasi yang sama ke semua platform, tetapi juga mengirimkan tindakan untuk dilakukan aplikasi sebagai respons terhadap interaksi pengguna dengan notifikasi tersebut. Berikut adalah contoh efek visual pada perangkat pengguna:
Node.js
const topicName = 'industry-tech';
const message = {
notification: {
title: 'Breaking News....'
},
android: {
notification: {
clickAction: 'news_intent'
}
},
apns: {
payload: {
aps: {
'category': 'INVITE_CATEGORY'
}
}
},
webpush: {
fcmOptions: {
link: 'breakingnews.html'
}
},
topic: topicName,
};
getMessaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
REST
POST https://fcm.googleapis.com/v1/projects/myproject-b5ae1/messages:send HTTP/1.1