สร้างกลุ่มการแจ้งเตือน

ตั้งแต่ Android 7.0 (API ระดับ 24) เป็นต้นไป คุณสามารถแสดงการแจ้งเตือนที่เกี่ยวข้องได้ใน กลุ่ม ตัวอย่างเช่น หากแอปของคุณแสดงการแจ้งเตือนอีเมลที่ได้รับ ให้ใส่ การแจ้งเตือนทั้งหมดสำหรับข้อความอีเมลใหม่ในกลุ่มเดียวกันเพื่อให้ยุบ

ในการรองรับเวอร์ชันเก่า ให้เพิ่มการแจ้งเตือนสรุปที่ปรากฏเพียงอย่างเดียวให้กับ ให้สรุปการแจ้งเตือนทั้งหมดแยกกัน ซึ่งมักจะทำได้ดีที่สุดด้วย การแจ้งเตือนรูปแบบกล่องจดหมาย

รูปที่ 1 ยุบ (ด้านบน) และขยาย (ด้านล่าง) กลุ่มการแจ้งเตือน

ใช้กลุ่มการแจ้งเตือนหากการใช้งานของคุณเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้ กรณี:

  • การแจ้งเตือนย่อยเป็นการแจ้งเตือนที่สมบูรณ์และสามารถแสดง ทีละรายการได้โดยไม่ต้องมีข้อมูลสรุปกลุ่ม

  • การแสดงการแจ้งเตือนของบุตรหลานทีละรายการมีประโยชน์ดังนี้ สำหรับ ตัวอย่าง:

    • ซึ่งสามารถดำเนินการได้จริง โดยมีการดำเนินการเฉพาะกับการแจ้งเตือนแต่ละรายการ

    • การแจ้งเตือนแต่ละรายการจะมีข้อมูลเพิ่มเติมเพื่อให้ผู้ใช้ได้เห็น

หากการแจ้งเตือนไม่เป็นไปตามเกณฑ์ก่อนหน้า ให้พิจารณา การอัปเดตการแจ้งเตือนที่มีอยู่ด้วย ข้อมูลใหม่ หรือการสร้างรูปแบบข้อความ การแจ้งเตือนที่จะแสดง อัปเดตหลายรายการ ในการสนทนาเดียวกัน

สร้างกลุ่มและเพิ่มการแจ้งเตือนไปยังกลุ่ม

หากต้องการสร้างกลุ่มการแจ้งเตือน ให้กำหนดสตริงตัวระบุที่ไม่ซ้ำกันสำหรับกลุ่ม จากนั้น สำหรับการแจ้งเตือนแต่ละรายการที่คุณต้องการให้อยู่ในกลุ่ม setGroup() การส่งชื่อกลุ่ม เช่น

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

โดยค่าเริ่มต้น การแจ้งเตือนจะจัดเรียงตามเวลาที่โพสต์ แต่คุณ สามารถเปลี่ยนลำดับโดยการโทร setSortKey()

หากการแจ้งเตือนสำหรับกลุ่มของการแจ้งเตือนต้องได้รับการจัดการโดย การแจ้งเตือน โทร setGroupAlertBehavior() เช่น ถ้าต้องการให้มีเพียงข้อมูลสรุปกลุ่ม ทั้งหมด เด็กในกลุ่มต้องมีลักษณะการแจ้งเตือนกลุ่ม GROUP_ALERT_SUMMARY ตัวเลือกอื่นๆ ได้แก่ GROUP_ALERT_ALL และ GROUP_ALERT_CHILDREN

ตั้งค่าข้อมูลสรุปกลุ่ม

การแจ้งเตือนที่จัดกลุ่มต้องมีการแจ้งเตือนพิเศษที่ทำหน้าที่เป็นกลุ่ม สรุป หากต้องการเปิดใช้การแจ้งเตือนที่จัดกลุ่มไว้ คุณต้องตั้งค่าสรุปกลุ่ม ช่วงเวลานี้ สรุปกลุ่มต้องมีข้อความบางส่วนจากการแจ้งเตือนอื่นๆ แต่ละรายการ ในกลุ่มเพื่อช่วยให้ผู้ใช้เข้าใจเนื้อหาในกลุ่ม วิธีที่กลุ่ม ข้อมูลสรุปจะแสดงขึ้นอยู่กับเวอร์ชัน Android ดังนี้

  • ใน Android เวอร์ชันต่ำกว่า 7.0 (API ระดับ 24) ซึ่งไม่สามารถแสดงการฝัง กลุ่มการแจ้งเตือน ระบบจะแสดงเฉพาะข้อมูลสรุปกลุ่ม และซ่อนการแจ้งเตือนอื่นๆ ทั้งหมด ผู้ใช้สามารถแตะข้อมูลสรุปกลุ่มได้ เพื่อเปิดแอป

  • ใน Android 7.0 ขึ้นไป ระบบจะแสดงการแจ้งเตือนสรุปกลุ่ม เป็นกลุ่มการแจ้งเตือนแบบซ้อนกัน โดยมีข้อความบางส่วนจาก การแจ้งเตือนที่จัดกลุ่มไว้ ไม่แสดงข้อความที่คุณตั้งค่าไว้ในกลุ่ม การแจ้งเตือนสรุป ผู้ใช้สามารถขยายกลุ่มการแจ้งเตือนที่ซ้อนกันได้ เพื่อดูการแจ้งเตือนแต่ละรายการในกลุ่ม ดังที่แสดงในรูปที่ 1

แม้ว่า Android เวอร์ชันใหม่กว่าจะไม่แสดงข้อความสรุปแบบกลุ่มที่คุณ คุณต้องตั้งค่าข้อมูลสรุปด้วยตนเองเพื่อให้ การแจ้งเตือน ลักษณะการทำงานของข้อมูลสรุปกลุ่มอาจแตกต่างกันไปในอุปกรณ์บางเครื่อง ประเภทต่างๆ เช่น อุปกรณ์ที่สวมใส่ได้ การตั้งค่าข้อมูลอย่างละเอียดในสรุปกลุ่มมีประโยชน์ เพื่อมอบประสบการณ์ที่ดีที่สุดในทุกอุปกรณ์และทุกเวอร์ชัน

หากต้องการเพิ่มสรุปของกลุ่ม ให้ทำดังนี้

  1. สร้างการแจ้งเตือนใหม่พร้อมคำอธิบายของกลุ่ม ซึ่งมักจะได้ผลดีที่สุด โดยใช้รูปแบบกล่องจดหมาย การแจ้งเตือน

  2. เพิ่มการแจ้งเตือนข้อมูลสรุปลงในกลุ่มโดยโทรหา setGroup()

  3. ระบุว่าต้องใช้เป็นข้อมูลสรุปกลุ่มโดยการเรียกใช้ setGroupSummary(true)

โค้ดต่อไปนี้จะแสดงตัวอย่างการสร้างข้อมูลสรุปกลุ่ม

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

รหัสการแจ้งเตือนโดยสรุปต้องเหมือนกันเพื่อให้โพสต์ได้เพียงครั้งเดียวและ เพื่อให้คุณอัปเดตในภายหลังได้หากข้อมูลสรุปมีการเปลี่ยนแปลง ลำดับต่อมา การเพิ่มไปยังกลุ่มจะต้องส่งผลให้เกิดการอัปเดตข้อมูลสรุปที่มีอยู่

สำหรับโค้ดตัวอย่างที่ใช้การแจ้งเตือน โปรดดูการแจ้งเตือนของ Android ตัวอย่าง ที่ใช้เวลาเพียง 2 นาที

การจัดกลุ่มอัตโนมัติ

ใน Android 7.0 (API ระดับ 24) ขึ้นไป หากแอปส่ง และไม่ระบุคีย์กลุ่มหรือข้อมูลสรุปกลุ่ม ระบบอาจดำเนินการดังกล่าว จัดกลุ่มวิดีโอไว้ด้วยกันโดยอัตโนมัติ การแจ้งเตือนที่จัดกลุ่มไว้จะปรากฏโดยอัตโนมัติ พร้อมการแจ้งเตือนสรุปกลุ่มพร้อมข้อความตัวอย่างจาก การแจ้งเตือนที่จัดกลุ่มไว้ ผู้ใช้สามารถขยายการแจ้งเตือนสรุปนี้เพื่อดูแต่ละ การแจ้งเตือนแต่ละรายการ เช่นเดียวกับการแจ้งเตือนที่จัดกลุ่มด้วยตนเอง

ลักษณะการจัดกลุ่มอัตโนมัติอาจแตกต่างกันไปในอุปกรณ์บางประเภท เพื่อมอบสิ่งที่ดีที่สุด ประสบการณ์บนทุกอุปกรณ์และเวอร์ชัน หากคุณรู้ว่าการแจ้งเตือน จัดกลุ่มแล้ว ให้ระบุคีย์กลุ่มและข้อมูลสรุปกลุ่มเพื่อให้มีการจัดกลุ่ม