Notification Channel (saluran notifikasi) — adalah mekanisme Android yang diperkenalkan di versi 8.0 (API 26), yang mengelompokkan notifikasi berdasarkan kategori dan memberikan kontrol kepada pengguna atas perilakunya. Setiap saluran menentukan tingkat kepentingan, suara, getaran, dan tampilan visual untuk semua notifikasi yang dikirim melaluinya. Menurut Android Developers, NotificationChannel wajib untuk semua notifikasi di Android 8+ — tanpanya notifikasi tidak akan ditampilkan.
Poin Penting
Notification Channel — adalah wadah logis untuk notifikasi dengan tipe yang sama di Android 8+ (Oreo). Pengembang membuat saluran dengan ID unik, mengatur parameternya, lalu mengirim setiap notifikasi dengan menyebutkan saluran ini. Semua notifikasi dalam satu saluran mewarisi pengaturannya.
Sebelum Android 8, pengelolaan notifikasi bersifat biner: semua atau tidak sama sekali. Pengguna hanya dapat menonaktifkan semua notifikasi aplikasi sepenuhnya. Saluran memecahkan masalah ini: sekarang notifikasi iklan dapat dinonaktifkan sambil tetap mempertahankan pesan dari teman.
Setelah saluran dibuat, kepentingan (importance) dapat diubah oleh pengguna kapan saja melalui Pengaturan → Aplikasi → Notifikasi. Pengembang tidak dapat mengubah importance secara terprogram setelah saluran dibuat — ini adalah batasan keamanan Android.
Di Android 8+, setiap notifikasi harus dikirim melalui NotificationChannel. Jika aplikasi mencoba menampilkan notifikasi tanpa saluran — sistem akan mengabaikannya secara diam-diam. Pengecualian — notifikasi melalui NotificationCompat dengan saluran default yang dibuat secara otomatis oleh pustaka.
Saluran notifikasi ditentukan oleh serangkaian parameter yang diatur saat pembuatannya melalui kelas NotificationChannel. Parameter utama — tingkat kepentingan (importance level), yang menentukan bagaimana notifikasi berinteraksi dengan pengguna.
Setelah dibuat, saluran muncul di pengaturan notifikasi sistem. Pengguna dapat mengubah importance, menonaktifkan suara, getaran, atau memblokir saluran sepenuhnya. Semua perubahan berlaku segera untuk semua notifikasi berikutnya.
Saat membuat NotificationChannel, dapat dikonfigurasi: suara (kustom atau sistem), getaran (pola dan durasi), indikator cahaya (warna LED), lencana (setShowBadge), visibilitas di layar kunci (setLockscreenVisibility) dan mode Jangan Ganggu (setBypassDnd). Parameter ini ditetapkan saat pembuatan saluran dan hanya dapat diubah oleh pengguna di kemudian hari.
Tingkat kepentingan (importance) — parameter utama saluran. Ini menentukan apakah notifikasi akan memutar suara, muncul di layar, atau hanya ditempatkan di bayangan. Kepentingan tidak boleh disamakan dengan prioritas — importance diatur oleh saluran, sedangkan prioritas (setPriority) diabaikan di Android 8+.
| Tingkat | Konstanta | Perilaku | Suara |
|---|---|---|---|
| HIGH | IMPORTANCE_HIGH (4) | Menampilkan banner heads-up, muncul di panel | Ya |
| DEFAULT | IMPORTANCE_DEFAULT (3) | Muncul di panel, tanpa heads-up | Ya |
| LOW | IMPORTANCE_LOW (2) | Muncul di panel tanpa suara | Tidak |
| MIN | IMPORTANCE_MIN (1) | Hanya di bayangan, tanpa suara dan getaran | Tidak |
| NONE | IMPORTANCE_NONE (0) | Tidak ditampilkan sama sekali | Tidak |
Untuk sebagian besar skenario pengguna, gunakan IMPORTANCE_DEFAULT (3) — notifikasi akan muncul di panel dengan suara, tetapi tanpa banner pop-up. Gunakan IMPORTANCE_HIGH hanya untuk peristiwa penting: panggilan masuk, pesan dari lawan bicara, pengingat dengan timer.
Saluran dibuat sekali — saat aplikasi dimulai atau saat penggunaan pertama. Praktik terbaik adalah membuat semua saluran saat aplikasi dimulai, di metode Application.onCreate. Pembuatan ulang saluran yang sudah ada aman — Android mengabaikan panggilan jika saluran sudah ada.
class App : Application() {
override fun onCreate() {
super.onCreate()
createNotificationChannels()
}
private fun createNotificationChannels() {
val messagesChannel = NotificationChannel(
CHANNEL_MESSAGES,
"Pesan",
NotificationManager.IMPORTANCE_HIGH
).apply {
description = "Notifikasi pesan baru"
enableVibration = true
setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
}
val promoChannel = NotificationChannel(
CHANNEL_PROMO,
"Promo dan berita",
NotificationManager.IMPORTANCE_LOW
).apply {
description = "Notifikasi pemasaran dan penawaran khusus"
setShowBadge(false)
}
val manager = getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(messagesChannel)
manager.createNotificationChannel(promoChannel)
}
companion object {
const val CHANNEL_MESSAGES = "messages"
const val CHANNEL_PROMO = "promo"
}
}
Saat mengirim notifikasi, tentukan ID saluran melalui setChannelId (untuk NotificationCompat) atau di konstruktor Notification.Builder. Jika saluran dengan ID yang ditentukan tidak ada — notifikasi tidak akan ditampilkan, tetapi tidak akan terjadi kesalahan.
Android menyediakan beberapa API untuk pengelolaan saluran secara terprogram: mendapatkan daftar, menghapus, dan memeriksa pengaturan saat ini. Penghapusan saluran menyebabkan semua notifikasinya dihapus dari riwayat oleh sistem.
val manager =
getSystemService(NotificationManager::class.java)
// Dapatkan daftar semua saluran
val channels = manager.getNotificationChannels()
channels.forEach { channel ->
Log.d("Saluran", "${channel.id}: ${channel.importance}")
}
// Ketahui importance saat ini (pengguna mungkin telah mengubahnya)
val channel = manager.getNotificationChannel(CHANNEL_MESSAGES)
if (channel.importance == NotificationManager.IMPORTANCE_NONE) {
// Pengguna menonaktifkan saluran
suggestEnablingChannel()
}
// Hapus saluran
manager.deleteNotificationChannel(CHANNEL_PROMO)
Setelah saluran dibuat, pengembang tidak dapat mengubah importance secara terprogram — ini adalah batasan Android untuk melindungi pengguna dari penyalahgunaan. Jika perlu mengubah kepentingan saluran, buat saluran baru dengan ID lain dan migrasikan notifikasi.
Jika diperlukan untuk mengubah kepentingan saluran yang sudah ada, buat saluran baru dengan ID berbeda (misalnya, “messages_v2”) dan mulailah mengirim notifikasi ke sana. Saluran lama dapat dihapus melalui deleteNotificationChannel — semua notifikasinya akan dihapus dari riwayat. Beri tahu pengguna tentang migrasi melalui antarmuka aplikasi agar ia tidak kehilangan pengaturan.
NotificationChannelGroup menggabungkan beberapa saluran menjadi satu grup visual di antarmuka pengaturan Android. Grup membantu pengguna menavigasi saat aplikasi menggunakan 5+ saluran: misalnya, “Sosial”, “Sistem”, “Pemasaran”.
Grup dibuat melalui createNotificationChannelGroup dan diteruskan ke saluran saat pembuatannya melalui metode setGroup. Penghapusan grup juga menghapus semua salurannya. Setiap saluran hanya dapat menjadi milik satu grup.
Dalam praktiknya, grup saluran disarankan untuk aplikasi dengan lebih dari 3 saluran. Mereka menyederhanakan navigasi di pengaturan dan mengurangi kemungkinan pengguna menonaktifkan semua notifikasi sekaligus tanpa memahami daftar saluran.
Grup dibuat melalui createNotificationChannelGroup dengan ID unik dan nama. Kemudian setiap saluran dikaitkan ke grup melalui metode setGroup. Di pengaturan sistem, grup ditampilkan sebagai bagian dengan judul, di bawahnya terdapat semua saluran grup ini. Jika grup dihapus, semua salurannya juga secara otomatis dihapus oleh sistem tanpa kemungkinan pemulihan.
Desain saluran notifikasi yang tepat secara langsung memengaruhi pengalaman pengguna dan retensi. Pola utama — tiga tingkat kepentingan: saluran kritis (IMPORTANCE_HIGH) untuk pesan dan panggilan, standar (IMPORTANCE_DEFAULT) untuk notifikasi umum, dan sunyi (IMPORTANCE_LOW) untuk pemasaran dan berita. Gradasi seperti ini memberikan pilihan yang jelas kepada pengguna tanpa membebani.
Pola kedua — saluran berdasarkan modul fungsional. Setiap modul besar aplikasi (obrolan, pesanan, umpan, pemasaran) mendapatkan salurannya sendiri. Jika modul lebih dari 5, gabungkan dalam NotificationChannelGroup. Di pengaturan sistem, grup ditampilkan sebagai bagian dengan elemen yang dapat disembunyikan — ini menyederhanakan navigasi.
Pola ketiga — saluran untuk pengembang. Buat saluran terpisah dengan IMPORTANCE_MIN untuk notifikasi debugging dan layanan. Pengguna tidak akan melihatnya di panel, tetapi pengembang dapat menganalisis log melalui adb. Di produksi, saluran ini dapat dihapus atau disembunyikan dari antarmuka melalui Intent di pengaturan.
Pola keempat — umpan balik tentang saluran. Tunjukkan kepada pengguna di antarmuka saluran mana yang aktif dan apa importance saat ini. Di Android 8+, status saluran dapat diperoleh melalui getNotificationChannel dan menawarkan pengguna untuk mengubah pengaturan jika saluran dinonaktifkan. Ini sangat penting untuk fungsi kritis aplikasi.
Pertanyaan yang Sering Diajukan
Notifikasi tidak akan ditampilkan baik di panel maupun di bayangan. Sistem secara diam-diam akan mengabaikan panggilan notify(). Pengecualian: saat menggunakan NotificationCompat, pustaka membuat saluran default, tetapi importance-nya selalu DEFAULT. Disarankan untuk selalu membuat saluran sendiri.
Nama, deskripsi, dan suara saluran dapat diubah. Importance tidak dapat diubah — keputusan ini dilindungi oleh sistem dari pengembang. Jika perlu meningkatkan kepentingan — buat saluran baru dengan ID lain dan gunakan untuk notifikasi baru. Pengguna dapat mengubah importance kapan saja.
Gunakan getNotificationChannel dan periksa importance: jika nilainya IMPORTANCE_NONE, saluran dinonaktifkan. Anda juga dapat membuka pengaturan sistem saluran melalui Intent: Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS dengan parameter app_package dan channel_id.
Tidak ada batasan — Android tidak menetapkan batas jumlah saluran. Namun, disarankan untuk tidak membuat lebih dari 5–10 saluran agar tidak membebani pengguna dengan pilihan. Minimum optimal adalah 2–3 saluran: notifikasi kritis, biasa, dan pemasaran.
Di Android 7.1 (API 25) dan yang lebih lama saluran tidak didukung. Kelas NotificationChannel hanya tersedia sejak API 26. Untuk kompatibilitas mundur, gunakan NotificationCompat dan bungkus pembuatan saluran dalam kondisi if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O).
Kesimpulan
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