Mulai Android 8.0 (level API 26), semua notifikasi harus ditetapkan ke saluran. Untuk setiap saluran, Anda dapat menyetel perilaku visual dan pendengaran yang diterapkan ke semua notifikasi di saluran tersebut. Pengguna dapat mengubah setelan ini dan memutuskan saluran notifikasi mana dari aplikasi Anda yang dapat mengganggu atau terlihat.
Tonton video berikut untuk ringkasan saluran dan fitur notifikasi lainnya di Android 8.0.
Setelan pengguna untuk saluran notifikasi tersedia untuk setiap aplikasi di setelan sistem, seperti yang ditunjukkan pada gambar 1.
Setelah membuat saluran notifikasi, Anda tidak dapat mengubah perilaku notifikasi. Pengguna memiliki kontrol penuh pada tahap tersebut. Namun, Anda masih dapat mengubah nama dan deskripsi channel.
Buat saluran untuk setiap jenis notifikasi yang perlu Anda kirim. Anda juga dapat membuat saluran notifikasi untuk mencerminkan pilihan yang dibuat oleh pengguna. Misalnya, Anda dapat menyiapkan saluran notifikasi terpisah untuk setiap grup percakapan yang dibuat oleh pengguna di aplikasi pesan.
Saat menargetkan Android 8.0 (level API 26) atau yang lebih tinggi, Anda harus menerapkan satu atau beberapa saluran notifikasi. Jika targetSdkVersion ditetapkan ke 25 atau lebih rendah,
saat aplikasi berjalan di Android 8.0 (level API 26) atau yang lebih tinggi, aplikasi akan berperilaku sama
seperti di perangkat yang menjalankan Android 7.1 (level API 25) atau yang lebih rendah.
Membuat saluran notifikasi
Untuk membuat saluran notifikasi, ikuti langkah-langkah berikut:
Buat objek
NotificationChanneldengan ID channel yang unik, nama yang terlihat oleh pengguna, dan tingkat kepentingan.Atau, tentukan deskripsi yang dilihat pengguna di setelan sistem dengan
setDescription().Daftarkan saluran notifikasi dengan meneruskannya ke
createNotificationChannel().
Contoh berikut menunjukkan cara membuat dan mendaftarkan saluran notifikasi:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val importance = NotificationManager.IMPORTANCE_DEFAULT val mChannel = NotificationChannel(CHANNEL_ID, name, importance) mChannel.description = descriptionText // Register the channel with the system. You can't change the importance // or other notification behaviors after this. val notificationManager = context.getSystemService(NotificationManager::class.java) notificationManager?.createNotificationChannel(mChannel) }
Membuat ulang saluran notifikasi yang ada dengan nilai aslinya tidak akan melakukan operasi apa pun, sehingga aman untuk memanggil kode ini saat memulai aplikasi.
Secara default, semua notifikasi yang diposting ke saluran tertentu menggunakan perilaku visual dan
auditori yang ditentukan oleh tingkat kepentingan dari
class NotificationManagerCompat, seperti IMPORTANCE_DEFAULT atau
IMPORTANCE_HIGH. Lihat bagian berikutnya untuk mengetahui informasi selengkapnya tentang
tingkat kepentingan.
Jika ingin menyesuaikan lebih lanjut perilaku notifikasi default channel,
Anda dapat memanggil metode seperti enableLights(), setLightColor(),
dan setVibrationPattern() di NotificationChannel. Ingat bahwa
setelah membuat saluran, Anda tidak dapat mengubah setelan ini, dan pengguna memiliki
kontrol akhir atas apakah perilaku ini aktif.
Anda juga dapat membuat beberapa saluran notifikasi dalam satu operasi dengan
memanggil createNotificationChannels().
Menetapkan tingkat kepentingan
Kepentingan saluran memengaruhi tingkat gangguan semua notifikasi yang diposting di
saluran. Tentukan dalam konstruktor NotificationChannel, menggunakan salah satu dari
lima tingkat kepentingan, mulai dari IMPORTANCE_NONE(0) hingga
IMPORTANCE_HIGH(4).
Untuk mendukung perangkat yang menjalankan Android 7.1 (level API 25) atau yang lebih rendah, Anda juga harus
memanggil setPriority() untuk setiap notifikasi, menggunakan konstanta prioritas dari
class NotificationCompat.
Konstanta tingkat kepentingan (NotificationManager.IMPORTANCE_*) dan prioritas
(NotificationCompat.PRIORITY_*) dipetakan ke opsi tingkat kepentingan yang terlihat oleh pengguna, seperti yang ditunjukkan dalam tabel berikut.
| Tingkat kepentingan yang terlihat oleh pengguna | Tingkat kepentingan (Android 8.0 dan versi lebih tinggi) | Prioritas (Android 7.1 dan yang lebih rendah) |
|---|---|---|
| Mendesak Mengeluarkan suara dan muncul sebagai notifikasi peringatan dini. |
IMPORTANCE_HIGH |
PRIORITY_HIGH atau PRIORITY_MAX |
| Tinggi Mengeluarkan suara. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
| Sedang Tidak mengeluarkan suara. |
IMPORTANCE_LOW |
PRIORITY_LOW |
| Rendah Tidak mengeluarkan suara dan tidak muncul di status bar. |
IMPORTANCE_MIN |
PRIORITY_MIN |
| Tidak ada Tidak mengeluarkan suara dan tidak muncul di status bar atau bayangan. |
IMPORTANCE_NONE |
N/A |
Semua notifikasi, terlepas dari tingkat kepentingannya, muncul di lokasi UI sistem yang tidak mengganggu, seperti di panel samping notifikasi dan sebagai badge pada ikon peluncur, meskipun Anda dapat mengubah tampilan badge notifikasi.
Setelah mengirimkan saluran ke NotificationManager, Anda tidak dapat mengubah
tingkat kepentingannya. Namun, pengguna dapat mengubah preferensi mereka untuk saluran
aplikasi Anda kapan saja.
Untuk mengetahui informasi tentang cara memilih tingkat prioritas yang sesuai, lihat "Tingkat prioritas" di Panduan desain notifikasi.
Membaca setelan saluran notifikasi
Pengguna dapat mengubah setelan untuk saluran notifikasi, termasuk perilaku seperti getaran dan suara notifikasi. Jika Anda ingin mengetahui setelan yang diterapkan pengguna ke saluran notifikasi Anda, ikuti langkah-langkah berikut:
Dapatkan objek
NotificationChanneldengan memanggilgetNotificationChannel()ataugetNotificationChannels().Membuat kueri setelan saluran tertentu seperti
getVibrationPattern(),getSound(), dangetImportance().
Jika mendeteksi setelan saluran yang Anda yakini menghambat perilaku yang diinginkan untuk aplikasi, Anda dapat menyarankan agar pengguna mengubahnya dan memberikan tindakan untuk membuka setelan saluran, seperti yang ditunjukkan di bagian berikutnya.
Membuka setelan saluran notifikasi
Setelah membuat saluran notifikasi, Anda tidak dapat mengubah perilaku visual dan audio saluran notifikasi secara terprogram. Hanya pengguna yang dapat mengubah perilaku saluran dari setelan sistem. Untuk memberi pengguna akses cepat ke setelan notifikasi ini, tambahkan item di UI setelan aplikasi Anda yang membuka setelan sistem ini.
Anda dapat membuka setelan sistem untuk saluran notifikasi dengan
Intent yang menggunakan tindakan
ACTION_CHANNEL_NOTIFICATION_SETTINGS.
Misalnya, kode contoh berikut menunjukkan cara mengalihkan pengguna ke setelan untuk saluran notifikasi:
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName) putExtra(Settings.EXTRA_CHANNEL_ID, CHANNEL_ID) } Button(onClick = { context.startActivity(intent) }) { Text("Open Channel Settings") }
Perhatikan bahwa intent memerlukan dua tambahan yang menentukan nama paket aplikasi Anda (juga dikenal sebagai ID aplikasi) dan saluran yang akan diedit.
Menghapus saluran notifikasi
Anda dapat menghapus saluran notifikasi dengan memanggil
deleteNotificationChannel().
Kode contoh berikut menunjukkan cara menyelesaikan proses ini:
val notificationManager = ContextCompat.getSystemService<NotificationManager>(context, NotificationManager::class.java) notificationManager?.deleteNotificationChannel(channelId)
Membuat grup saluran notifikasi
Jika ingin mengatur tampilan saluran lebih lanjut di UI setelan, Anda dapat membuat grup saluran. Ini adalah ide yang bagus jika aplikasi Anda mendukung beberapa akun pengguna karena memungkinkan Anda membuat grup saluran notifikasi untuk setiap akun. Grup saluran membantu pengguna membedakan dan mengontrol beberapa saluran notifikasi yang memiliki nama yang sama.
Misalnya, aplikasi jejaring sosial mungkin menyertakan dukungan untuk akun pribadi dan kerja. Dalam skenario ini, setiap akun mungkin memerlukan beberapa saluran notifikasi dengan fungsi dan nama yang sama, seperti berikut:
Akun pribadi dengan dua saluran:
Komentar baru
Rekomendasi postingan
Akun bisnis dengan dua saluran:
Komentar baru
Rekomendasi postingan
Mengatur saluran notifikasi ke dalam grup untuk setiap akun memungkinkan pengguna membedakannya.
Setiap grup saluran notifikasi memerlukan ID, yang harus unik dalam paket Anda, serta nama yang dapat dilihat pengguna. Cuplikan berikut menunjukkan cara membuat grup saluran notifikasi.
fun createNotificationChannelGroup(context: Context, groupId: String, groupName: String) { val notificationManager = ContextCompat.getSystemService(context, NotificationManager::class.java) notificationManager?.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName)) }
Setelah membuat grup baru, Anda dapat memanggil
setGroup()
untuk mengaitkan objek NotificationChannel baru dengan grup.
Setelah mengirimkan saluran ke pengelola notifikasi, Anda tidak dapat mengubah pengaitan antara saluran notifikasi dan grup.