Firebase Cloud Messaging (FCM) — adalah layanan lintas platform untuk pengiriman notifikasi push dan pesan dari Google, yang dirancang untuk aplikasi mobile dan web. FCM menyediakan transmisi data yang andal antara server dan perangkat klien tanpa perlu mempertahankan koneksi jaringan permanen. Menurut Firebase Documentation, 2026, melalui infrastruktur FCM setiap hari melewati lebih dari 300 miliar pesan di seluruh dunia. Layanan ini mendukung baik notifikasi dengan tampilan otomatis maupun pesan data untuk transmisi data tersembunyi di latar belakang.
Poin utama
Firebase Cloud Messaging — adalah layanan cloud Google yang menyediakan transmisi notifikasi push dan pesan data antara server aplikasi dan perangkat klien. Layanan ini telah menggantikan Google Cloud Messaging (GCM) yang sudah usang dan menjadi solusi standar untuk pengiriman push di ekosistem Firebase. FCM mendukung Android, iOS, Web dan Unity, menyediakan antarmuka pengiriman terpadu terlepas dari platform target.
Layanan ini menyediakan beberapa mekanisme pengiriman pesan, masing-masing menyelesaikan tugasnya sendiri. Pesan notification ditampilkan oleh sistem secara otomatis saat diterima — pengembang tidak perlu menulis kode untuk menampilkan notifikasi. Pesan data mengirimkan payload arbitrer dalam bentuk pasangan kunci-nilai dan diproses di dalam aplikasi. Pesan gabungan berisi bagian yang terlihat dan tersembunyi secara bersamaan untuk fleksibilitas maksimal.
Mengimplementasikan server push sendiri memerlukan pemeliharaan koneksi TCP permanen dengan setiap perangkat, yang tidak efisien dan tidak aman. FCM menggunakan infrastruktur terpadu Google yang mempertahankan koneksi dengan miliaran perangkat secara bersamaan. Layanan ini secara otomatis mengelola upaya pengiriman ulang, antrian pesan, dan penyeimbangan beban, membebaskan pengembang dari kebutuhan untuk menyelesaikan tugas-tugas ini sendiri.
Arsitektur FCM terdiri dari tiga komponen utama: server penyedia (backend Anda), server Firebase Cloud Messaging dan aplikasi klien di perangkat. Ketika server mengirim pesan, pesan pertama kali masuk ke infrastruktur FCM yang merutekannya ke perangkat target. Jika perangkat offline, FCM menyimpan pesan dalam antrian dan mengirimkannya saat koneksi dipulihkan.
Saat pertama kali dijalankan, aplikasi memanggil Firebase SDK yang mendaftarkan perangkat ke layanan FCM dan menerima Registration Token yang unik. Token ini adalah string sepanjang sekitar 150 karakter yang mengidentifikasi instance aplikasi tertentu pada perangkat tertentu. Token dapat berubah saat instalasi ulang aplikasi, penghapusan data atau pemulihan dari cadangan — pengembang harus menangani pembaruan token melalui delegasi onNewToken.
Ketika server mengirim permintaan melalui FCM API, pesan melewati beberapa tahap. Penerimaan dan validasi — FCM memeriksa kebenaran permintaan dan keberadaan perangkat target. Antrian — jika perangkat tidak tersedia, pesan masuk ke antrian penyimpanan. Perutean — FCM menentukan saluran pengiriman optimal (Wi-Fi atau data seluler). Pengiriman — sistem mengirimkan pesan ke aplikasi target. Setelah pengiriman berhasil, FCM mengembalikan pengidentifikasi pesan ke server.
Firebase Cloud Messaging mendukung tiga tipe pesan, masing-masing memiliki karakteristik pemrosesan sendiri di sisi klien. Pesan notification diproses oleh layanan sistem Google Play Services di Android dan APNs di iOS dan secara otomatis ditampilkan sebagai banner push. Pesan data dikirimkan langsung ke aplikasi dan diproses melalui callback onMessageReceived di Android dan application(_:didReceiveRemoteNotification:) di iOS.
Pesan notification berisi bidang yang telah ditentukan: title, body, URL gambar dan suara notifikasi. Sistem secara otomatis membuat dan menampilkan notifikasi di baki sistem, bahkan jika aplikasi berada di latar belakang atau dimatikan. Pengguna melihat banner standar dengan judul dan teks, dan saat diklik aplikasi terbuka dengan data yang dikirimkan dalam payload. Jika aplikasi aktif, pesan notification dapat dicegat dan diproses dalam kode.
Pesan data adalah kumpulan pasangan kunci-nilai khusus tanpa bidang yang telah ditentukan. Payload tidak diproses oleh sistem secara otomatis — aplikasi menerima data mentah dan dapat menafsirkannya sesuai keinginan. Pesan data digunakan untuk sinkronisasi data di latar belakang, memperbarui cache lokal, memicu sinkronisasi atau mengirimkan perintah tanpa menampilkan notifikasi. Di Android, pesan data selalu dikirimkan, bahkan jika aplikasi dimatikan atau di latar belakang.
FCM memungkinkan pengiriman pesan yang berisi bagian notification (untuk ditampilkan) dan bagian data (untuk diproses) secara bersamaan. Payload gabungan mencakup bidang notification yang telah ditentukan maupun kunci data arbitrer. Sistem menampilkan notifikasi dari bagian notification, dan bagian data dikirimkan ke intent extras aplikasi saat dibuka. Ini berguna untuk skenario di mana perlu menampilkan notifikasi kepada pengguna dan sekaligus mengirimkan konteks untuk navigasi ke layar tertentu.
| Tipe | Tampilan otomatis | Pemrosesan latar belakang | Contoh |
|---|---|---|---|
| Notification | Ya, oleh sistem | Otomatis, tanpa kode | Notifikasi push selamat datang |
| Data | Tidak | Melalui callback aplikasi | Sinkronisasi data di latar belakang |
| Gabungan | Ya, bagian notification | Bagian data saat dibuka | Notifikasi + tautan pesanan |
Integrasi FCM di Android dimulai dengan menghubungkan Firebase SDK melalui file build.gradle di tingkat aplikasi. Setelah menambahkan dependensi dan file google-services.json, aplikasi secara otomatis menerima Registration Token yang dikirimkan melalui callback FirebaseMessagingService. Untuk menerima notifikasi, perlu dibuat layanan yang mewarisi FirebaseMessagingService dan mendaftarkannya di AndroidManifest.xml.
Setelah menghubungkan SDK, Firebase secara otomatis menghasilkan token perangkat tanpa kode tambahan. Token tersedia melalui FirebaseMessaging.getInstance().token, yang mengembalikan Task
class MyFirebaseMessagingService :
FirebaseMessagingService() {
override fun onNewToken(token: String) {
sendTokenToServer(token)
}
override fun onMessageReceived(
message: RemoteMessage
) {
val data = message.data
val title = "Pesan baru"
val body = data["body"] ?: ""
showNotification(title, body)
}
}
Layanan untuk menerima pesan FCM harus didaftarkan di AndroidManifest.xml dengan intent-filter yang sesuai. Penambahan tag service dengan izin INTERNET dan menentukan action. Tanpa registrasi layanan, pesan tidak akan dikirimkan ke aplikasi di latar belakang. Untuk menampilkan notifikasi di Android 13+ diperlukan izin runtime POST_NOTIFICATIONS.
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name=
"android.permission.POST_NOTIFICATIONS" />
<service
android:name=".MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name=
"com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Integrasi FCM di iOS memerlukan konfigurasi baik di sisi Apple Push Notification Service (APNs) maupun di Firebase Console. Tidak seperti Android di mana FCM mengelola koneksi secara langsung, di iOS FCM menggunakan APNs sebagai lapisan transport. Aplikasi mendaftar untuk menerima notifikasi push melalui UIApplication.shared.registerForRemoteNotifications, dan Firebase SDK mencegat token perangkat yang diterima dan menghubungkannya dengan FCM Registration Token.
Untuk menjalankan FCM di iOS, kunci atau sertifikat APNs harus diunggah ke Firebase Console. Kunci APNs — adalah metode otentikasi modern tanpa sertifikat (direkomendasikan oleh Apple). Kunci dibuat di Apple Developer Portal di bagian Keys dan diunggah di pengaturan Cloud Messaging di Firebase Console. Setelah konfigurasi APNs, aplikasi meminta izin untuk notifikasi melalui UNUserNotificationCenter dan mendaftar melalui APNs.
import Firebase
import UserNotifications
class AppDelegate: NSObject, UIApplicationDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
UNUserNotificationCenter.current()
.requestAuthorization(options: [.alert, .sound, .badge])
application.registerForRemoteNotifications()
return true
}
func application(
_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken
deviceToken: Data
) {
Messaging.messaging()
.apnsToken = deviceToken
}
}
Untuk memproses notifikasi yang diterima, delegasi UNUserNotificationCenter diimplementasikan. Metode willPresent dipanggil ketika notifikasi diterima saat aplikasi aktif — di sini dapat ditampilkan notifikasi in-app kustom atau mengabaikan banner sistem. Metode didReceive dipanggil ketika pengguna mengklik notifikasi — di sini navigasi ke layar yang sesuai dilakukan. Untuk pesan data, delegasi MessagingDelegate digunakan yang menerima payload saat menerima pesan FCM di latar belakang.
Pengiriman sisi server pesan FCM dilakukan melalui HTTP v1 API Firebase Cloud Messaging atau Firebase Cloud Messaging API yang sudah usang. HTTP v1 API adalah metode yang direkomendasikan, menggunakan otentikasi OAuth 2.0 melalui Service Account dan mendukung semua kemampuan modern FCM, termasuk analitik pengiriman dan pengujian A/B notifikasi. Permintaan dikirim dengan metode POST ke endpoint https://fcm.googleapis.com/v1/projects/{project_id}/messages:send.
Badan permintaan berisi objek JSON dengan informasi tentang pesan: target (token, topik atau kondisi), notification (untuk ditampilkan) dan data (payload kustom). Otentikasi melalui kunci JSON Service Account yang dimuat ke variabel lingkungan server. Token akses dihasilkan melalui perpustakaan google-auth-library. Google merekomendasikan penggunaan Firebase Admin SDK untuk manajemen otomatis otentikasi dan upaya ulang.
const admin = require("firebase-admin")
const serviceAccount = require("./serviceAccountKey.json")
admin.initializeApp({ credential: admin.credential.cert(serviceAccount) })
const message = {
token: "device_registration_token",
notification: { title: "Diskon 20%", body: "Untuk semua layanan hari ini" },
data: { screen: "promo", promoId: "324" },
android: { priority: "high" },
apns: { payload: { aps: { sound: "default" } } }
}
admin.messaging().send(message)
.then(response => {
console.log("Berhasil dikirim:", response)
})
.catch(error => {
console.log("Kesalahan pengiriman:", error)
})
Untuk mengirim notifikasi ke grup pengguna, FCM mendukung langganan topik. Topik — adalah saluran bernama yang digunakan aplikasi klien untuk berlangganan melalui FirebaseMessaging.getInstance().subscribeToTopic(). Server dapat mengirim pesan ke topik dan akan dikirimkan ke semua perangkat yang berlangganan. Topik cocok untuk buletin, notifikasi promosi dan push acara. Untuk segmentasi yang lebih presisi, digunakan kondisi (conditions) berdasarkan beberapa topik dengan operator logika.
Pertanyaan yang sering diajukan
FCM bekerja di Android melalui infrastruktur Google sendiri, dan di iOS menggunakan APNs sebagai protokol transport. FCM menyediakan API terpadu untuk kedua platform, penyimpanan pesan offline otomatis dan analitik pengiriman, yang tidak ada di APNs murni.
Ya, melalui Firebase Console di bagian Cloud Messaging dapat mengirim notifikasi secara manual ke perangkat yang dipilih, topik atau segmen audiens. Fungsi ini cocok untuk pengujian dan pengiriman satu kali, tetapi tidak menggantikan integrasi server untuk aplikasi produksi.
Berlangganan pembaruan token melalui onNewToken di FirebaseMessagingService (Android) atau MessagingDelegate (iOS). Saat token berubah, kirim token baru ke server dan hapus yang lama. Server harus memperbarui database dan menghentikan upaya pengiriman ke token yang sudah usang.
FCM menyimpan pesan dalam antrian hingga 28 hari dan mengirimkannya saat koneksi dipulihkan. Untuk pesan notification, hanya pesan terakhir untuk setiap grup collapse yang diciutkan. Pesan data disimpan secara terpisah dan dikirimkan dalam urutan pengiriman tanpa penciutan.
FCM sepenuhnya gratis tanpa batasan jumlah pesan. Penggunaan FCM tidak dikenakan biaya baik dalam paket Spark maupun paket Blaze. Batasan hanya berlaku untuk ukuran payload: hingga 4 KB untuk pesan notification dan hingga 2 KB untuk pesan data.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga