Buat grup notifikasi

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

Untuk mendukung versi yang lebih lama, tambahkan notifikasi ringkasan yang muncul sendiri untuk meringkas semua notifikasi terpisah. Hal ini sering kali dilakukan dengan notifikasi bergaya kotak masuk.

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

Gunakan grup notifikasi jika semua kondisi berikut benar untuk kasus penggunaan Anda:

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

  • Ada manfaatnya memunculkan notifikasi turunan satu per satu. Contoh:

    • Hal ini dapat diaplikasikan dengan tindakan khusus untuk setiap turunan.

    • Ada informasi lebih lanjut di setiap notifikasi untuk dilihat pengguna.

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

Membuat grup dan menambahkan notifikasi

Untuk membuat grup notifikasi, tentukan string ID unik untuk grup tersebut. Kemudian, untuk setiap notifikasi yang ingin Anda masukkan dalam grup, panggil setGroup(), dengan meneruskan nama grup. Contoh:

Kotlin

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()

Java

String GROUP_KEY_WORK_EMAIL = "com.android.example.WORK_EMAIL";

Notification newMessageNotification = new NotificationCompat.Builder(MainActivity.this, 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 sesuai dengan waktu diposting, tetapi Anda dapat mengubah urutannya dengan memanggil setSortKey().

Jika pemberitahuan untuk grup notifikasi harus ditangani oleh notifikasi yang berbeda, panggil setGroupAlertBehavior() Misalnya, jika Anda hanya ingin ringkasan grup yang mengeluarkan derau, semua turunan dalam grup harus memiliki perilaku pemberitahuan 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 berfungsi 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 apa yang ada dalam grup. Cara ringkasan grup ditampilkan bergantung pada versi Android:

  • Pada versi Android yang lebih rendah dari 7.0 (API level 24), yang tidak dapat menampilkan grup notifikasi bertingkat, 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 baru, sistem menampilkan notifikasi ringkasan grup Anda sebagai grup notifikasi bertingkat, yang diberi label dengan cuplikan teks dari setiap notifikasi yang dikelompokkan. Ini tidak menampilkan teks yang Anda tetapkan pada notifikasi ringkasan grup. Pengguna dapat meluaskan grup notifikasi bertingkat untuk melihat setiap notifikasi dalam grup, seperti yang ditunjukkan pada gambar 1.

Meskipun versi Android yang lebih baru tidak menampilkan teks ringkasan grup yang Anda desain, Anda harus selalu menetapkan ringkasan secara manual untuk mengaktifkan notifikasi berkelompok. Perilaku ringkasan grup dapat bervariasi di beberapa jenis perangkat, seperti perangkat wearable. Menetapkan konten lengkap di 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—sebaiknya dilakukan dengan notifikasi bergaya kotak masuk.

  2. Tambahkan notifikasi ringkasan ke grup dengan memanggil setGroup().

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

Kode berikut menunjukkan contoh pembuatan ringkasan grup:

Kotlin

// 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)
}

Java

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

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

Notification newMessageNotification2 =
    new NotificationCompat.Builder(MainActivity.this, 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();

Notification summaryNotification =
    new NotificationCompat.Builder(MainActivity.this, 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(new 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 notificationManager = NotificationManagerCompat.from(this);
notificationManager.notify(emailNotificationId1, newMessageNotification1);
notificationManager.notify(emailNotificationId2, newMessageNotification2);
notificationManager.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 menyebabkan pembaruan ringkasan yang ada.

Untuk kode contoh yang menggunakan notifikasi, lihat Contoh Notifikasi Android .

Pengelompokan otomatis

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

Perilaku pengelompokan otomatis dapat bervariasi di beberapa jenis perangkat. Untuk memberikan pengalaman terbaik di semua perangkat dan versi, jika Anda tahu notifikasi harus dikelompokkan, tentukan kunci grup dan ringkasan grup untuk memastikannya dikelompokkan.