Mengubah badge notifikasi

Mulai Android 8.0 (API level 26), badge notifikasi—juga dikenal sebagai titik notifikasi—muncul di ikon peluncur saat aplikasi terkait memiliki notifikasi aktif. Pengguna dapat menyentuh lama ikon aplikasi untuk menampilkan notifikasi, beserta pintasan aplikasi, seperti yang ditunjukkan pada gambar 1.

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

Gambar 1. Badge notifikasi dan menu sentuh lama.

Menonaktifkan pemberian badge

Ada kalanya badge tidak relevan untuk notifikasi, jadi Anda dapat menonaktifkannya berdasarkan per saluran dengan memanggil setShowBadge(false) pada objek NotificationChannel.

Misalnya, Anda mungkin ingin menonaktifkan badge notifikasi dalam situasi berikut:

  • Notifikasi yang sedang berjalan: sebagian besar notifikasi yang sedang berjalan, seperti pemrosesan gambar, kontrol pemutaran media, atau petunjuk navigasi saat ini, tidak relevan sebagai badge.
  • Pengingat kalender: hindari pemberian badge di peristiwa yang terjadi saat ini.
  • Peristiwa jam atau alarm: hindari pemberian badge pada notifikasi yang berkaitan dengan 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 pada menu sentuh lama, seperti yang ditunjukkan pada gambar 1, tetapi Anda dapat mengganti angka ini untuk aplikasi Anda. Misalnya, hal ini mungkin berguna jika Anda hanya menggunakan satu notifikasi untuk mewakili beberapa pesan baru, tetapi ingin penghitungannya mewakili jumlah total pesan baru.

Untuk menetapkan nomor khusus, 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();

Mengubah ikon menu sentuh lama notifikasi

Menu sentuh lama menampilkan ikon besar atau kecil yang terkait dengan notifikasi jika tersedia. Secara default, sistem menampilkan ikon besar, tetapi Anda dapat memanggil Notification.Builder.setBadgeIconType() dan meneruskan konstanta 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 menyembunyikan pintasan untuk sementara selagi notifikasi aktif dengan memanggil setShortcutId().

Untuk kode contoh lainnya yang menggunakan notifikasi, lihat aplikasi contoh SociaLite.