Notifikasi Push
Kirim notifikasi push melalui Firebase Cloud Messaging. Siapkan FCM, buat kanal notifikasi, buat notifikasi dengan tindakan, dan tangani pengiriman saat aplikasi di latar depan maupun latar belakang.
Notifikasi Push adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 6. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 6 pelajaran total.
Apa Itu Notifikasi Push?
Notifikasi push memungkinkan server Anda mengirim pesan kepada pengguna meskipun aplikasi tidak berada di latar depan. Penggunaan umumnya:
- Pemberitahuan pesan baru
- Pembaruan status pesanan
- Berita terkini
- Pengingat dan promosi
Di Android, Firebase Cloud Messaging (FCM) adalah layanan pengiriman push standar.
Gambaran Umum FCM
Alur Firebase Cloud Messaging (FCM):
- Aplikasi mendaftar ke FCM saat pertama kali dijalankan → menerima token perangkat
- Aplikasi mengirim token ke server Anda
- Saat Anda ingin mengirim push, server mengirim pesan ke FCM
- FCM mengirimkannya ke perangkat
FCM gratis, andal, dan tetap berfungsi meskipun aplikasi dihentikan.
Menambahkan Firebase ke Proyek
Langkah-langkah untuk menambahkan Firebase:
- Buka Firebase Console → Add project → Add Android app
- Daftarkan aplikasi Anda menggunakan nama paket
- Unduh
google-services.jsondan letakkan diapp/ - Tambahkan plugin dan dependensi
// project/build.gradle:
buildscript {
dependencies { classpath 'com.google.gms:google-services:4.4.1' }
}
// app/build.gradle:
plugins { id 'com.google.gms.google-services' }
dependencies {
implementation platform('com.google.firebase:firebase-bom:32.7.4')
implementation 'com.google.firebase:firebase-messaging-ktx'
}Izin FCM (Android 13+)
Mulai Android 13 (API 33), Anda harus meminta izin POST_NOTIFICATIONS saat runtime — sama seperti izin berbahaya:
<!-- AndroidManifest.xml -->
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
// In Activity (Android 13+):
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissionLauncher.launch(android.Manifest.permission.POST_NOTIFICATIONS)
}FirebaseMessagingService
Buat layanan yang menangani pesan FCM masuk dan penyegaran token:
class MyFirebaseService : FirebaseMessagingService() {
override fun onNewToken(token: String) {
// Send token to your backend to enable push delivery
sendTokenToServer(token)
}
override fun onMessageReceived(message: RemoteMessage) {
val title = message.notification?.title ?: "New Message"
val body = message.notification?.body ?: ""
showNotification(title, body)
}
}Mendaftarkan Layanan di Manifest
Deklarasikan layanan di AndroidManifest.xml:
<service
android:name=".MyFirebaseService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>Saluran Notifikasi (Android 8+)
Sejak Android 8 (Oreo), notifikasi harus ditetapkan ke sebuah saluran. Pengguna dapat mengatur suara, getaran, dan tingkat kepentingan untuk setiap saluran:
fun createNotificationChannel(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
"messages_channel", // channel ID
"Messages", // user-visible name
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Incoming message notifications"
enableVibration(true)
}
val manager = context.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}Membuat & Menampilkan Notifikasi
Gunakan NotificationCompat.Builder agar kompatibel di berbagai versi Android:
fun showNotification(context: Context, title: String, body: String) {
val intent = Intent(context, MainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(title)
.setContentText(body)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setAutoCancel(true) // dismiss on tap
.setContentIntent(pendingIntent) // open app on tap
.build()
NotificationManagerCompat.from(context)
.notify(System.currentTimeMillis().toInt(), notification)
}Notifikasi dengan Tindakan
Tambahkan tombol tindakan ke notifikasi agar pengguna dapat bertindak tanpa membuka aplikasi:
val replyIntent = Intent(context, ReplyReceiver::class.java)
val replyPending = PendingIntent.getBroadcast(
context, 1, replyIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val notification = NotificationCompat.Builder(context, "messages_channel")
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("New message from Alice")
.setContentText("Hey, are you coming?")
.addAction(R.drawable.ic_reply, "Reply", replyPending)
.addAction(R.drawable.ic_dismiss, "Dismiss", null)
.build()Penanganan di Latar Depan vs Latar Belakang
Perilaku FCM berbeda-beda bergantung pada status aplikasi:
- Aplikasi di latar depan —
onMessageReceived()dipanggil; Anda membuat dan menampilkan notifikasi sendiri - Aplikasi di latar belakang/dihentikan — FCM secara otomatis menampilkan notifikasi dari payload
notification;onMessageReceivedTIDAK dipanggil
Letakkan data tambahan di payload data (bukan notification) agar selalu menerimanya di onMessageReceived.
Mendapatkan Token FCM
Dapatkan token FCM saat ini untuk dikirim ke server Anda:
FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
if (!task.isSuccessful) {
Log.w("FCM", "Fetching token failed", task.exception)
return@addOnCompleteListener
}
val token = task.result
Log.d("FCM", "Token: $token")
// Send token to your server
sendTokenToServer(token)
}Pemeriksaan Singkat
Apa yang terjadi saat aplikasi berada di latar belakang dan FCM mengirimkan pesan dengan payload 'notification'?
Ringkasan: Notifikasi Push
Notifikasi push dengan FCM di Android:
- Tambahkan Firebase,
google-services.json, danfirebase-messaging-ktx - Minta
POST_NOTIFICATIONSdi Android 13+ - Buat
FirebaseMessagingService→onNewToken+onMessageReceived - Buat
NotificationChanneluntuk Android 8+ - Buat notifikasi dengan
NotificationCompat.Builder - Gunakan payload data agar selalu menerimanya di
onMessageReceived
Berikutnya: jadwalkan pekerjaan di latar belakang dengan WorkManager.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Notifikasi Push” gratis?
Ya — teks lengkap “Notifikasi Push” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 6 pelajaran total.
Apa yang akan aku pelajari di “Notifikasi Push”?
Kirim notifikasi push melalui Firebase Cloud Messaging. Siapkan FCM, buat kanal notifikasi, buat notifikasi dengan tindakan, dan tangani pengiriman saat aplikasi di latar depan maupun latar belakang. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 6.
Berapa lama pelajaran “Notifikasi Push” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Retrofit & API REST
- Memuat Gambar dengan Coil
- Penanganan Error & UX
- Notifikasi Push
- WorkManager & Tugas Latar Belakang
- Menerbitkan ke Play Store