Mulai Android 8.0 (API level 26), semua notifikasi harus ditetapkan ke saluran TV Anda. Untuk setiap saluran, Anda dapat mengatur perilaku visual dan auditori yang diterapkan ke semua notifikasi di saluran tersebut. Pengguna dapat mengubah setelan ini dan memutuskan saluran notifikasi mana dari aplikasi yang bisa mengganggu atau terlihat.
Tonton video berikut untuk ringkasan channel dan notifikasi lainnya di Android 8.0.
Pengaturan pengguna untuk saluran notifikasi tersedia untuk setiap aplikasi di pengaturan sistem, seperti yang ditunjukkan pada gambar 1.
Setelah membuat saluran notifikasi, Anda tidak dapat mengubah notifikasi perilaku model. Pengguna memiliki kendali penuh pada saat itu. 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. Sebagai contoh, Anda dapat menyiapkan saluran notifikasi terpisah untuk setiap grup percakapan yang dibuat oleh pengguna di aplikasi pesan.
Bila menargetkan Android 8.0 (API level 26) atau yang lebih tinggi, Anda harus mengimplementasikan satu atau
saluran notifikasi lainnya. Jika targetSdkVersion
ditetapkan ke 25 atau lebih rendah,
saat aplikasi Anda berjalan di Android 8.0 (API level 26) atau yang lebih tinggi, aplikasi berperilaku sama
seperti pada perangkat yang menjalankan Android 7.1 (API level 25) atau yang lebih rendah.
Membuat saluran notifikasi
Untuk membuat saluran notifikasi, ikuti langkah-langkah berikut:
Buat Objek
NotificationChannel
dengan ID saluran unik, nama yang terlihat oleh pengguna, dan tingkat kepentingan.(Opsional) Tentukan deskripsi yang akan dilihat pengguna di setelan sistem dengan
setDescription()
Daftarkan saluran notifikasi dengan meneruskannya ke
createNotificationChannel()
Contoh berikut menunjukkan cara membuat dan mendaftarkan saluran notifikasi:
Kotlin
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // Create the NotificationChannel. val name = getString(R.string.channel_name) val descriptionText = getString(R.string.channel_description) 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 = getSystemService(NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(mChannel) }
Java
private void createNotificationChannel() { // Create the NotificationChannel, but only on API 26+ because // the NotificationChannel class is not in the Support Library. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { CharSequence name = getString(R.string.channel_name); String description = getString(R.string.channel_description); int importance = NotificationManager.IMPORTANCE_DEFAULT; NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance); channel.setDescription(description); // Register the channel with the system. You can't change the importance // or other notification behaviors after this. NotificationManager notificationManager = getSystemService(NotificationManager.class); notificationManager.createNotificationChannel(channel); } }
Membuat ulang saluran notifikasi yang ada dengan nilai aslinya tidak akan sehingga aman untuk memanggil kode ini saat memulai aplikasi.
Secara default, semua notifikasi yang diposting ke channel tertentu menggunakan elemen visual dan
perilaku pendengaran yang ditentukan oleh tingkat kepentingan dari
NotificationManagerCompat
, seperti
IMPORTANCE_DEFAULT
atau
IMPORTANCE_HIGH
.
Lihat bagian berikutnya untuk informasi selengkapnya tentang
tingkat kepentingan.
Jika ingin menyesuaikan lebih lanjut perilaku notifikasi default channel Anda,
Anda dapat memanggil metode seperti
enableLights()
,
setLightColor()
,
dan
setVibrationPattern()
pada NotificationChannel
. Ingat bahwa setelah membuat channel, Anda
tidak dapat mengubah setelan ini, dan pengguna memiliki kendali akhir atas apakah ini
perilaku model.
Anda juga bisa membuat beberapa saluran notifikasi dalam satu operasi dengan
menelepon
createNotificationChannels()
Menetapkan tingkat kepentingan
Nilai penting channel memengaruhi tingkat gangguan untuk semua notifikasi yang diposting di
saluran tersebut. Tentukan dalam konstruktor NotificationChannel
, menggunakan salah satu
lima tingkat kepentingan, mulai dari
IMPORTANCE_NONE(0)
dapat
IMPORTANCE_HIGH(4)
.
Untuk mendukung perangkat yang menjalankan Android 7.1 (API level 25) atau yang lebih rendah, Anda juga harus
panggilan telepon
setPriority()
untuk setiap notifikasi, menggunakan konstanta prioritas dari
NotificationCompat
.
Tingkat kepentingan (NotificationManager.IMPORTANCE_*
) dan prioritas
Konstanta (NotificationCompat.PRIORITY_*
) dipetakan ke 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 Berbunyi dan muncul sebagai notifikasi peringatan dini. |
IMPORTANCE_HIGH |
PRIORITY_HIGH atau PRIORITY_MAX |
Tinggi Berbunyi. |
IMPORTANCE_DEFAULT |
PRIORITY_DEFAULT |
Medium Tidak bersuara. |
IMPORTANCE_LOW |
PRIORITY_LOW |
Rendah Tidak bersuara dan tidak muncul di status bar. |
IMPORTANCE_MIN |
PRIORITY_MIN |
Tidak ada Tidak bersuara dan tidak muncul di status bar atau shade. |
IMPORTANCE_NONE |
N/A |
Semua notifikasi, terlepas dari tingkat kepentingannya, muncul di sistem yang tidak mengganggu Lokasi UI, seperti di panel samping notifikasi dan badge pada ikon peluncur, meskipun Anda bisa mengubah tampilan badge notifikasi.
Setelah Anda mengirimkan channel ke
NotificationManager
, Anda
tidak dapat mengubah tingkat kepentingan. Namun, pengguna dapat mengubah
untuk saluran aplikasi Anda kapan saja.
Untuk mengetahui informasi tentang pemilihan tingkat prioritas yang sesuai, lihat "Prioritas level" di Panduan desain notifikasi.
Membaca setelan saluran notifikasi
Pengguna dapat mengubah pengaturan untuk saluran notifikasi, termasuk perilaku seperti getaran dan suara notifikasi. Jika Anda ingin mengetahui pengaturan pengguna berlaku untuk saluran notifikasi Anda, ikuti langkah-langkah berikut:
Mendapatkan objek
NotificationChannel
dengan memanggilgetNotificationChannel()
ataugetNotificationChannels()
.Buat kueri setelan saluran tertentu seperti
getVibrationPattern()
,getSound()
, dangetImportance()
.
Jika Anda mendeteksi setelan channel yang Anda yakini menghambat perilaku yang diinginkan untuk aplikasi Anda, Anda bisa menyarankan agar pengguna mengubahnya dan memberikan tindakan untuk buka setelan channel, seperti yang ditunjukkan di bagian berikutnya.
Membuka setelan saluran notifikasi
Setelah membuat saluran notifikasi, Anda tidak dapat mengubah notifikasi perilaku visual dan pendengaran secara terprogram. Hanya pengguna yang dapat mengubah perilaku saluran dari pengaturan sistem. Untuk memberi pengguna akses mudah ke pengaturan notifikasi ini, tambahkan item di UI setelan yang membuka setelan sistem ini.
Anda dapat membuka pengaturan sistem untuk saluran notifikasi dengan
Intent
yang menggunakan
ACTION_CHANNEL_NOTIFICATION_SETTINGS
tindakan.
Misalnya, kode contoh berikut menunjukkan cara mengalihkan pengguna ke setelan untuk saluran notifikasi:
Kotlin
val intent = Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS).apply { putExtra(Settings.EXTRA_APP_PACKAGE, packageName) putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()) } startActivity(intent)
Java
Intent intent = new Intent(Settings.ACTION_CHANNEL_NOTIFICATION_SETTINGS); intent.putExtra(Settings.EXTRA_APP_PACKAGE, getPackageName()); intent.putExtra(Settings.EXTRA_CHANNEL_ID, myNotificationChannel.getId()); startActivity(intent);
Perhatikan bahwa intent memerlukan dua tambahan yang menetapkan 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:
Kotlin
// The id of the channel. val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val id: String = "my_channel_01" notificationManager.deleteNotificationChannel(id)
Java
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); // The id of the channel. String id = "my_channel_01"; notificationManager.deleteNotificationChannel(id);
Membuat grup saluran notifikasi
Jika Anda ingin mengatur tampilan saluran lebih lanjut di UI pengaturan, Anda dapat membuat grup saluran. Suatu ide bagus jika aplikasi Anda mendukung beberapa akun pengguna, seperti untuk profil kerja, karena memungkinkan Anda membuat grup saluran notifikasi untuk setiap akun. Dengan cara ini, pengguna dapat dengan mudah mengidentifikasi dan mengontrol beberapa saluran notifikasi yang memiliki nama identik.
Misalnya, aplikasi jejaring sosial dapat menyertakan dukungan untuk aplikasi pribadi dan pekerjaan menggunakan akun layanan. Dalam skenario ini, setiap akun mungkin memerlukan beberapa notifikasi saluran dengan fungsi dan nama yang identik, 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 akan memungkinkan pengguna membedakannya.
Setiap grup saluran notifikasi memerlukan ID, yang harus unik dalam paket, serta nama yang terlihat oleh pengguna. Cuplikan berikut menunjukkan cara untuk membuat grup saluran notifikasi.
Kotlin
// The id of the group. val groupId = "my_group_01" // The user-visible name of the group. val groupName = getString(R.string.group_name) val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannelGroup(NotificationChannelGroup(groupId, groupName))
Java
// The id of the group. String groupId = "my_group_01"; // The user-visible name of the group. CharSequence groupName = getString(R.string.group_name); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannelGroup(new 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 asosiasi antara saluran notifikasi dan grup.