0Pricing
Android Academy · Pelajaran

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):

  1. Aplikasi mendaftar ke FCM saat pertama kali dijalankan → menerima token perangkat
  2. Aplikasi mengirim token ke server Anda
  3. Saat Anda ingin mengirim push, server mengirim pesan ke FCM
  4. FCM mengirimkannya ke perangkat

FCM gratis, andal, dan tetap berfungsi meskipun aplikasi dihentikan.

Menambahkan Firebase ke Proyek

Langkah-langkah untuk menambahkan Firebase:

  1. Buka Firebase Console → Add project → Add Android app
  2. Daftarkan aplikasi Anda menggunakan nama paket
  3. Unduh google-services.json dan letakkan di app/
  4. 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; onMessageReceived TIDAK 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, dan firebase-messaging-ktx
  • Minta POST_NOTIFICATIONS di Android 13+
  • Buat FirebaseMessagingService → onNewToken + onMessageReceived
  • Buat NotificationChannel untuk 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

  1. Retrofit & API REST
  2. Memuat Gambar dengan Coil
  3. Penanganan Error & UX
  4. Notifikasi Push
  5. WorkManager & Tugas Latar Belakang
  6. Menerbitkan ke Play Store
← Kembali ke Android Academy