Tạo một nhóm thông báo

Kể từ Android 7.0 (API cấp 24), bạn có thể cho thấy các thông báo liên quan trong một nhóm. Ví dụ: nếu ứng dụng của bạn cho thấy thông báo về các email đã nhận, hãy đặt tất cả thông báo về email mới trong cùng một nhóm để chúng thu gọn khi kết hợp cùng nhau.

Để hỗ trợ các phiên bản cũ hơn, hãy thêm thông báo tóm tắt chỉ hiển thị với bạn có thể tóm tắt tất cả các thông báo riêng biệt. Điều này thường được thực hiện tốt nhất với thông báo kiểu hộp thư đến.

Hình 1. A thu gọn (trên cùng) và mở rộng (dưới cùng) nhóm thông báo.

Sử dụng nhóm thông báo nếu bạn đáp ứng tất cả các điều kiện sau đây trường hợp:

  • Thông báo mà trẻ nhận được là thông báo hoàn chỉnh và có thể hiển thị riêng mà không cần tóm tắt nhóm.

  • Việc hiển thị từng thông báo cho trẻ có một lợi ích. Ví dụ:

    • Các thông báo này có thể thực hiện được và đưa ra các hành động cụ thể cho từng thông báo.

    • Mỗi thông báo sẽ có thêm thông tin để người dùng xem.

Nếu thông báo của bạn không đáp ứng các tiêu chí trên, hãy cân nhắc cập nhật thông báo hiện có bằng thông tin mới hoặc tạo kiểu thông báo thông báo để hiển thị nhiều nội dung cập nhật trong cùng một cuộc trò chuyện.

Tạo nhóm rồi thêm thông báo vào nhóm đó

Để tạo nhóm thông báo, hãy xác định chuỗi giá trị nhận dạng duy nhất cho nhóm. Sau đó, đối với mỗi thông báo bạn muốn trong nhóm, hãy gọi setGroup()! chuyển tên nhóm. Ví dụ:

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

Theo mặc định, thông báo được sắp xếp theo thời điểm đăng, nhưng bạn có thể thay đổi thứ tự bằng cách gọi setSortKey().

Nếu cảnh báo cho nhóm thông báo phải được xử lý bởi một thông báo, cuộc gọi setGroupAlertBehavior() Ví dụ: nếu bạn chỉ muốn gây chú ý với phần tóm tắt của nhóm, tất cả trẻ em trong nhóm phải có hành vi cảnh báo nhóm GROUP_ALERT_SUMMARY. Các tuỳ chọn khác là GROUP_ALERT_ALLGROUP_ALERT_CHILDREN.

Thiết lập bản tóm tắt về nhóm

Thông báo được nhóm phải có một thông báo bổ sung hoạt động như thông báo theo nhóm tóm tắt. Để bật thông báo được nhóm, bạn phải đặt bản tóm tắt của nhóm. Chiến dịch này tóm tắt nhóm phải bao gồm một số nội dung từ từng thông báo khác trong nhóm để giúp người dùng nắm được nội dung của nhóm. Cách nhóm Bản tóm tắt được hiển thị tuỳ thuộc vào phiên bản Android:

  • Trên các phiên bản Android thấp hơn 7.0 (API cấp 24), không thể hiển thị các thuộc tính lồng nhau nhóm thông báo, hệ thống chỉ hiển thị tóm tắt về nhóm và ẩn tất cả các ứng dụng khác. Người dùng có thể nhấn vào phần tóm tắt về nhóm để mở ứng dụng của bạn.

  • Trên Android 7.0 trở lên, hệ thống sẽ hiển thị thông báo tóm tắt nhóm của bạn dưới dạng một nhóm các thông báo lồng nhau, được gắn nhãn bằng đoạn văn bản từ mỗi thông báo được nhóm. Chế độ này không hiển thị văn bản bạn đã đặt cho nhóm thông báo tóm tắt. Người dùng có thể mở rộng nhóm thông báo lồng nhau để xem từng thông báo trong nhóm, như minh hoạ trong hình 1.

Ngay cả khi phiên bản Android mới hơn không hiển thị văn bản tóm tắt nhóm mà bạn thiết kế của bạn, bạn luôn cần tự đặt bản tóm tắt để bật tính năng nhóm thông báo. Hành vi của tính năng tóm tắt nhóm có thể khác nhau trên một số thiết bị chẳng hạn như thiết bị đeo được. Việc đặt nội dung đa dạng thức trên bản tóm tắt nhóm sẽ hữu ích mang lại trải nghiệm tốt nhất trên mọi thiết bị và phiên bản.

Để thêm bản tóm tắt nhóm, hãy tiến hành như sau:

  1. Tạo một thông báo mới kèm theo nội dung mô tả về nhóm – tốt nhất thực hiện bằng kiểu hộp thư đến thông báo.

  2. Thêm thông báo tóm tắt vào nhóm bằng cách gọi setGroup().

  3. Chỉ định rằng nhóm này phải được dùng làm bản tóm tắt nhóm bằng cách gọi setGroupSummary(true).

Đoạn mã sau đây là ví dụ về cách tạo bản tóm tắt về nhóm:

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

Mã thông báo tóm tắt phải giữ nguyên để chỉ đăng một lần và để bạn có thể cập nhật sau nếu thông tin tóm tắt thay đổi. Tiếp theo việc thêm vào nhóm phải dẫn đến việc cập nhật bản tóm tắt hiện có.

Để biết mã mẫu sử dụng thông báo, hãy xem phần Thông báo của Android Mẫu của Google.

Tự động nhóm

Trên Android 7.0 (API cấp 24) trở lên, nếu ứng dụng của bạn gửi 4 lượt chuyển đổi trở lên và không chỉ định khoá nhóm hoặc tóm tắt nhóm, hệ thống có thể sẽ tự động nhóm chúng lại với nhau. Thông báo được nhóm sẽ tự động xuất hiện với thông báo tóm tắt nhóm được gắn nhãn bằng đoạn trích văn bản từ một số các thông báo được nhóm. Người dùng có thể mở rộng thông báo tóm tắt này để xem từng thông báo riêng lẻ, chẳng hạn như thông báo được nhóm theo cách thủ công.

Hành vi nhóm tự động có thể khác nhau trên một số loại thiết bị. Để mang đến những giá trị tốt nhất trên mọi thiết bị và phiên bản, nếu bạn biết rằng cần phải được nhóm, chỉ định khoá nhóm và tóm tắt nhóm để đảm bảo chúng được nhóm.