Mengubah badge notifikasi

Mulai Android 8.0 (API level 26), badge notifikasi—juga dikenal sebagai titik notifikasi—muncul pada ikon peluncur bila aplikasi terkait memiliki notifikasi aktif. Pengguna dapat sentuh & tahan ikon aplikasi untuk membuka notifikasi, bersama dengan pintasan app, seperti yang ditampilkan di gambar 1.

Titik-titik ini muncul secara default di aplikasi peluncur yang mendukungnya, dan ada tidak ada yang perlu dilakukan aplikasi Anda. Namun, mungkin ada situasi di mana Anda Anda tidak ingin titik notifikasi muncul atau Anda ingin mengontrol notifikasi mana yang akan muncul di sana.

Gambar 1. Lencana notifikasi dan sentuhan & tahan menu.

Menonaktifkan pemberian badge

Terkadang badge tidak masuk akal untuk notifikasi, jadi dapat menonaktifkannya per saluran dengan memanggil setShowBadge(false) di NotificationChannel Anda .

Misalnya, Anda mungkin ingin menonaktifkan badge notifikasi situasi:

  • Notifikasi berkelanjutan: sebagian besar notifikasi berkelanjutan, seperti pemrosesan gambar, kontrol pemutaran media, atau petunjuk navigasi saat ini, tidak masuk akal sebagai badge.
  • Pengingat kalender: hindari pemberian badge pada acara yang terjadi pada waktu saat ini.
  • Peristiwa jam atau alarm: hindari memberi badge pada notifikasi terkait alarm saat ini.

Kode contoh berikut menunjukkan cara menyembunyikan badge untuk saluran notifikasi:

Kotlin

val id = "my_channel_01"
val name = getString(R.string.channel_name)
val descriptionText = getString(R.string.channel_description)
val importance = NotificationManager.IMPORTANCE_LOW
val mChannel = NotificationChannel(id, name, importance).apply {
    description = descriptionText
    setShowBadge(false)
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)

Java

String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);

NotificationManager notificationManager =
        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);

Menetapkan jumlah notifikasi khusus

Secara default, setiap notifikasi menambah angka yang ditampilkan saat menyentuh & ditahan seperti yang ditunjukkan pada gambar 1, namun Anda bisa mengganti nomor ini untuk aplikasi Anda. Misalnya, hal ini mungkin berguna jika Anda hanya menggunakan satu notifikasi untuk merepresentasikan beberapa pesan baru, tetapi menginginkan jumlahnya untuk mewakili jumlah total pesan baru.

Untuk menetapkan nomor kustom, panggil setNumber() pada notifikasi, seperti yang ditunjukkan di sini:

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build()

Java

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setNumber(messageCount)
        .build();

Memodifikasi sentuhan notifikasi & ikon menu tahan

Sentuhan & menu tahan menampilkan ikon besar atau kecil yang terkait dengan notifikasi jika tersedia. Secara {i>default<i}, sistem menampilkan ikon besar, tetapi kamu bisa panggil Notification.Builder.setBadgeIconType() dan teruskan BADGE_ICON_SMALL untuk menampilkan ikon kecil.

Kotlin

var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build()

Java

Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
        .setContentTitle("New Messages")
        .setContentText("You've received 3 new messages.")
        .setSmallIcon(R.drawable.ic_notify_status)
        .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
        .build();

Menyembunyikan pintasan duplikat

Jika aplikasi Anda membuat notifikasi yang menduplikasi pintasan aplikasi, Anda dapat sembunyikan pintasan untuk sementara saat notifikasi aktif dengan memanggil setShortcutId()

Untuk kode contoh lainnya yang menggunakan notifikasi, lihat Contoh orang.