Mengubah Badge Notifikasi

Dimulai dengan 8.0 (API level 26), badge notifikasi (juga disebut sebagai titik notifikasi) muncul pada ikon peluncur saat aplikasi terkait memiliki notifikasi aktif. Pengguna bisa menekan lama ikon aplikasi untuk membuka notifikasi (di samping pintasan app mana pun), 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 ini muncul atau Anda ingin mengontrol notifikasi mana yang muncul di sana.

Gambar 1. Badge notifikasi dan menu tekan lama

Menonaktifkan pemberian badge

Ada saat di mana badge tidak relevan untuk notifikasi, jadi Anda bisa menonaktifkannya pada basis per saluran dengan memanggil setShowBadge(false) pada objek NotificationChannel Anda.

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 instruksi 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 menggambarkan 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 jumlah yang ditampilkan pada menu tekan lama (terlihat pada gambar 1), tetapi Anda bisa mengganti jumlah ini untuk aplikasi Anda. Misalnya, hal ini mungkin berguna jika Anda hanya menggunakan satu notifikasi untuk mewakili beberapa pesan baru tetapi Anda ingin hitungan di sini mewakili jumlah total pesan baru.

Untuk menetapkan jumlah 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 tekan lama notifikasi

Menu tekan lama menampilkan ikon kecil atau besar yang berkaitan dengan suatu notifikasi jika tersedia. Secara default, sistem menampilkan ikon besar, tetapi Anda bisa 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 app, Anda dapat menyembunyikan sementara pintasan tersebut saat notifikasi aktif dengan memanggil setShortcutId().

Untuk kode contoh lainnya yang menggunakan notifikasi, lihat Sampel Notifikasi Android.