Buat grup notifikasi

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

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

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

Gunakan grup notifikasi jika semua kondisi berikut ini 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 lebih banyak informasi di setiap notifikasi untuk 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 update dalam percakapan yang sama.

Membuat grup dan menambahkan notifikasi

Untuk membuat grup notifikasi, tentukan string ID unik untuk grup tersebut. Selanjutnya, untuk setiap notifikasi yang ingin dimasukkan 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 urutan 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 dan menyembunyikan yang lainnya. Pengguna dapat mengetuk notifikasi ringkasan grup untuk membuka aplikasi Anda.

  • Pada Android 7.0 dan yang lebih tinggi, sistem menampilkan notifikasi ringkasan grup sebagai grup notifikasi bertingkat, yang diberi label dengan cuplikan teks dari setiap notifikasi yang dikelompokkan. Tindakan ini 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 baru tidak menampilkan teks ringkasan grup yang Anda desain, Anda harus selalu menetapkan ringkasan secara manual untuk mengaktifkan notifikasi yang dikelompokkan. Perilaku ringkasan grup dapat bervariasi di beberapa jenis perangkat, seperti perangkat wearable. Menetapkan konten lengkap di ringkasan grup akan 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 gaya 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 sekali, sehingga Anda dapat memperbaruinya nanti jika informasi ringkasan berubah. Penambahan berikutnya ke grup harus mengakibatkan pembaruan ringkasan yang ada.

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

Pengelompokan otomatis

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

Perilaku pengelompokan otomatis dapat bervariasi 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 dikelompokkan.