Buat grup notifikasi

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

Untuk mendukung versi yang lebih lama, tambahkan notifikasi ringkasan yang muncul sendiri di merangkum semua notifikasi terpisah. Hal ini sering kali paling baik dilakukan dengan notifikasi dengan gaya kotak masuk.

Gambar 1. Diciutkan (atas) dan diperluas (bawah) grup notifikasi.

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

  • Notifikasi anak 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, pertimbangkan memperbarui notifikasi yang ada dengan informasi baru atau membuat gaya pesan notifikasi 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 Anda inginkan di grup, panggil setGroup(), 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, panggilan setGroupAlertBehavior() Misalnya, jika Anda ingin ringkasan grup saja yang mengeluarkan derau, 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 berfungsi sebagai grup ringkasan. Untuk mengaktifkan notifikasi yang dikelompokkan, Anda harus menetapkan ringkasan grup. Ini ringkasan grup harus menyertakan beberapa teks dari setiap notifikasi lainnya dalam grup untuk membantu pengguna memahami apa yang ada di dalam grup. Bagaimana grup ringkasan yang ditampilkan bergantung pada versi Android:

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

  • Di Android 7.0 dan yang lebih baru, sistem menampilkan notifikasi ringkasan grup sebagai grup notifikasi bertingkat, yang diberi label dengan cuplikan teks dari notifikasi yang dikelompokkan. Asisten tidak menampilkan teks yang Anda tetapkan di grup notifikasi ringkasan. 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 harus selalu mengatur ringkasan secara manual untuk mengaktifkan notifikasi. Perilaku ringkasan grup mungkin berbeda di beberapa 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—sering kali paling baik dilakukan dengan gaya kotak masuk notifikasi.

  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("[email protected]"))
        // 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("[email protected]"))
        // 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 sehingga Anda dapat memperbaruinya nanti jika informasi ringkasan berubah. Setelah penambahan ke grup harus menyebabkan pembaruan ringkasan yang ada.

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

Pengelompokan otomatis

Pada Android 7.0 (API level 24) dan yang lebih tinggi, jika aplikasi Anda mengirim empat atau lebih notifikasi dan tidak menentukan kunci grup atau ringkasan grup, sistem mungkin secara otomatis mengelompokkan mereka bersama-sama. Notifikasi yang dikelompokkan secara otomatis muncul dengan pemberitahuan 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 notifikasi yang dikelompokkan secara manual.

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