Buat grup notifikasi

Mulai Android 7.0 (level API 24), Anda dapat menampilkan notifikasi terkait dalam grup. Misalnya, jika aplikasi Anda menampilkan notifikasi untuk email yang diterima, masukkan semua notifikasi untuk pesan email baru ke dalam grup yang sama sehingga notifikasi tersebut diciutkan bersama.

Untuk mendukung versi yang lebih rendah, tambahkan notifikasi ringkasan yang muncul sendiri untuk meringkas semua notifikasi terpisah. Notifikasi gaya kotak masuk adalah cara yang biasa dilakukan untuk hal tersebut.

Grup notifikasi yang diciutkan dan diluaskan
Gambar 1. Grup notifikasi yang diciutkan (atas) dan diperluas (bawah) notification group.

Jika semua kondisi berikut terpenuhi untuk kasus penggunaan Anda, gunakan grup notifikasi:

  • Notifikasi turunan adalah notifikasi lengkap dan dapat ditampilkan satu per satu tanpa memerlukan ringkasan grup.

  • Ada manfaatnya jika menampilkan notifikasi turunan satu per satu. Contoh:

    • Notifikasi turunan memiliki tindakan yang spesifik untuk setiap notifikasi.

    • Ada lebih banyak informasi di setiap notifikasi yang dapat dilihat pengguna.

Jika notifikasi Anda tidak memenuhi kriteria sebelumnya, pertimbangkan untuk memperbarui notifikasi yang ada dengan informasi baru atau membuat notifikasi gaya pesan untuk menampilkan beberapa pembaruan dalam percakapan yang sama.

Membuat grup dan menambahkan notifikasi

Untuk membuat grup notifikasi, tentukan string ID unik untuk grup. Kemudian, untuk setiap notifikasi yang Anda inginkan dalam grup, panggil setGroup, dengan meneruskan nama grup. Contoh:

val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setSmallIcon(R.drawable.new_mail)
    .setContentTitle(emailObject.getSenderName())
    .setContentText(emailObject.getSubject())
    .setLargeIcon(emailObject.getSenderAvatar())
    .setGroup(GROUP_KEY_WORK_EMAIL)
    .build()

Secara default, notifikasi diurutkan menurut waktu posting, tetapi Anda dapat mengubah urutan dengan memanggil setSortKey.

Jika peringatan untuk grup notifikasi harus ditangani oleh notifikasi lain, panggil setGroupAlertBehavior. Misalnya, jika Anda hanya ingin ringkasan grup Anda mengeluarkan suara, semua turunan dalam grup harus memiliki perilaku peringatan grup GROUP_ALERT_SUMMARY. Opsi lainnya adalah GROUP_ALERT_ALL dan GROUP_ALERT_CHILDREN.

Menetapkan ringkasan grup

Notifikasi yang dikelompokkan harus memiliki notifikasi tambahan yang bertindak sebagai ringkasan grup. Untuk mengaktifkan notifikasi yang dikelompokkan, Anda harus menetapkan ringkasan grup. Ringkasan grup ini harus menyertakan beberapa teks dari setiap notifikasi lain dalam grup untuk membantu pengguna memahami isi grup. Cara ringkasan grup ditampilkan bergantung pada versi Android:

  • Versi Android yang lebih rendah dari 7.0 (level API 24) tidak dapat menampilkan grup notifikasi bertingkat, sehingga sistem hanya menampilkan notifikasi ringkasan grup Anda dan menyembunyikan semua notifikasi lainnya. Pengguna dapat mengetuk notifikasi ringkasan grup untuk membuka aplikasi Anda.

  • Di Android 7.0 dan yang lebih tinggi, sistem menampilkan notifikasi ringkasan grup Anda sebagai grup notifikasi bertingkat, yang diberi label dengan cuplikan teks dari setiap notifikasi yang dikelompokkan. Sistem tidak menampilkan teks yang Anda tetapkan pada notifikasi ringkasan grup. Pengguna dapat memperluas grup notifikasi bertingkat untuk melihat notifikasi individual dalam grup, seperti yang ditunjukkan pada Gambar 1.

Meskipun versi Android yang lebih tinggi tidak menampilkan teks ringkasan grup yang Anda desain, Anda harus menetapkan ringkasan secara manual untuk mengaktifkan notifikasi yang dikelompokkan. Perilaku ringkasan grup mungkin berbeda pada beberapa jenis perangkat, seperti perangkat wearable. Menetapkan konten multimedia pada ringkasan grup membantu memberikan pengalaman terbaik di semua perangkat dan versi.

Untuk menambahkan ringkasan grup, lakukan langkah-langkah berikut:

  1. Buat notifikasi baru dengan deskripsi grup—sering kali paling baik dilakukan dengan notifikasi gaya kotak masuk.

  2. Tambahkan notifikasi ringkasan ke grup dengan memanggil setGroup.

  3. Tentukan bahwa notifikasi tersebut harus digunakan sebagai ringkasan grup dengan memanggil setGroupSummary(true).

Kode berikut menunjukkan contoh pembuatan ringkasan grup:

// Use constant ID for notifications used as group summary.
val SUMMARY_ID = 0
val GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL"

val newMessageNotification1 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notify_email_status)
    .setContentTitle(emailObject1.getSummary())
    .setContentText("You will not believe...")
    .setGroup(GROUP_KEY_WORK_EMAIL)
    .build()

val newMessageNotification2 = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notify_email_status)
    .setContentTitle(emailObject2.getSummary())
    .setContentText("Please join us to celebrate the...")
    .setGroup(GROUP_KEY_WORK_EMAIL)
    .build()

val summaryNotification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
    .setContentTitle(emailObject.getSummary())
    // Set content text to support devices running API level < 24.
    .setContentText("Two new messages")
    .setSmallIcon(R.drawable.ic_notify_summary_status)
    // Build summary info into InboxStyle template.
    .setStyle(
        NotificationCompat.InboxStyle()
            .addLine("Alex Faarborg Check this out")
            .addLine("Jeff Chang Launch Party")
            .setBigContentTitle("2 new messages")
            .setSummaryText("janedoe@example.com")
    )
    // Specify which group this notification belongs to.
    .setGroup(GROUP_KEY_WORK_EMAIL)
    // Set this notification as the summary for the group.
    .setGroupSummary(true)
    .build()

NotificationManagerCompat.from(this).apply {
    notify(emailNotificationId1, newMessageNotification1)
    notify(emailNotificationId2, newMessageNotification2)
    notify(SUMMARY_ID, summaryNotification)
}

ID notifikasi ringkasan harus tetap sama agar hanya diposting satu kali dan Anda dapat memperbaruinya nanti jika informasi ringkasan berubah. Penambahan berikutnya ke grup harus menghasilkan pembaruan ringkasan yang ada.

Pengelompokan otomatis

Di Android 7.0 (level API 24) dan yang lebih tinggi, jika aplikasi Anda mengirimkan notifikasi dan tidak menentukan kunci grup atau ringkasan grup, sistem mungkin akan otomatis mengelompokkannya. Notifikasi yang dikelompokkan secara otomatis akan muncul dengan notifikasi ringkasan grup yang diberi label dengan cuplikan teks dari beberapa notifikasi yang dikelompokkan. Pengguna dapat memperluas notifikasi ringkasan ini untuk melihat setiap notifikasi individual, seperti pada notifikasi yang dikelompokkan secara manual.

Perilaku pengelompokan otomatis mungkin berbeda pada beberapa jenis perangkat. Untuk memberikan pengalaman terbaik di semua perangkat dan versi, jika Anda tahu bahwa notifikasi harus dikelompokkan, tentukan kunci grup dan ringkasan grup untuk memastikan notifikasi tersebut dikelompokkan.