ตั้งแต่ Android 7.0 (API ระดับ 24) เป็นต้นไป คุณสามารถแสดงการแจ้งเตือนที่เกี่ยวข้องในกลุ่มได้ เช่น หากแอปแสดงการแจ้งเตือนสำหรับอีเมลที่ได้รับ ให้ใส่การแจ้งเตือนทั้งหมดสำหรับข้อความอีเมลใหม่ไว้ในกลุ่มเดียวกันเพื่อให้ยุบรวมกัน
หากต้องการรองรับเวอร์ชันที่ต่ำกว่า ให้เพิ่มการแจ้งเตือนสรุปที่จะปรากฏขึ้นเพียงรายการเดียวเพื่อสรุปการแจ้งเตือนแยกกันทั้งหมด โดยปกติแล้วการแจ้งเตือนในรูปแบบกล่องจดหมายจะเป็นวิธีที่ใช้กัน
หากกรณีการใช้งานของคุณเป็นไปตามเงื่อนไขทั้งหมดต่อไปนี้ ให้ใช้กลุ่มการแจ้งเตือน
การแจ้งเตือนย่อยเป็นการแจ้งเตือนที่สมบูรณ์และสามารถแสดงแยกกันได้โดยไม่จำเป็นต้องมีสรุปกลุ่ม
การแสดงการแจ้งเตือนย่อยแยกกันมีประโยชน์ เช่น
มีการดำเนินการเฉพาะสำหรับการแจ้งเตือนแต่ละรายการ
การแจ้งเตือนแต่ละรายการมีข้อมูลเพิ่มเติมให้ผู้ใช้ดู
หากการแจ้งเตือนไม่เป็นไปตามเกณฑ์ข้างต้น ให้พิจารณา อัปเดตการแจ้งเตือนที่มีอยู่ด้วยข้อมูลใหม่หรือสร้าง การแจ้งเตือนในรูปแบบข้อความเพื่อแสดงการอัปเดตหลายรายการใน การสนทนาเดียวกันแทน
สร้างกลุ่มและเพิ่มการแจ้งเตือนลงในกลุ่ม
หากต้องการสร้างกลุ่มการแจ้งเตือน ให้กำหนดสตริงตัวระบุที่ไม่ซ้ำกันสำหรับกลุ่ม
จากนั้นเรียกใช้ setGroup,
โดยส่งชื่อกลุ่มสำหรับการแจ้งเตือนแต่ละรายการที่ต้องการใส่ไว้ในกลุ่ม เช่น
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()
โดยค่าเริ่มต้น ระบบจะเรียงลำดับการแจ้งเตือนตามเวลาที่โพสต์ แต่คุณ
สามารถเปลี่ยนลำดับได้โดยเรียกใช้ setSortKey
หากการแจ้งเตือนสำหรับกลุ่มการแจ้งเตือนต้องได้รับการจัดการโดยการแจ้งเตือนอื่น
ให้เรียกใช้ setGroupAlertBehavior เช่น หากต้องการให้เฉพาะ
สรุปของกลุ่มส่งเสียง การแจ้งเตือนย่อยทั้งหมดในกลุ่มต้องมี
ลักษณะการแจ้งเตือนของกลุ่มเป็น GROUP_ALERT_SUMMARY ตัวเลือกอื่นๆ ได้แก่
GROUP_ALERT_ALL และ GROUP_ALERT_CHILDREN
ตั้งค่าสรุปกลุ่ม
การแจ้งเตือนที่จัดกลุ่มต้องมีการแจ้งเตือนเพิ่มเติมที่ทำหน้าที่เป็นสรุปกลุ่ม หากต้องการเปิดใช้การแจ้งเตือนที่จัดกลุ่ม คุณต้องตั้งค่าสรุปกลุ่ม สรุปกลุ่มนี้ต้องมีข้อความบางส่วนจากการแจ้งเตือนอื่นๆ แต่ละรายการในกลุ่มเพื่อช่วยให้ผู้ใช้เข้าใจว่ามีอะไรอยู่ในกลุ่ม ลักษณะการแสดงสรุปกลุ่มจะขึ้นอยู่กับเวอร์ชัน Android ดังนี้
Android เวอร์ชันต่ำกว่า 7.0 (ระดับ API 24) ไม่สามารถแสดงกลุ่มการแจ้งเตือนที่ซ้อนกันได้ ดังนั้นระบบจะแสดงเฉพาะการแจ้งเตือนสรุปกลุ่มและซ่อนการแจ้งเตือนอื่นๆ ทั้งหมด ผู้ใช้สามารถแตะการแจ้งเตือนสรุปกลุ่มเพื่อเปิดแอปได้
ใน Android 7.0 ขึ้นไป ระบบจะแสดงการแจ้งเตือนสรุปกลุ่มเป็นกลุ่มการแจ้งเตือนที่ซ้อนกัน โดยติดป้ายกำกับด้วยข้อความบางส่วนจากการแจ้งเตือนที่จัดกลุ่มแต่ละรายการ ระบบจะไม่แสดงข้อความที่คุณตั้งค่าในการแจ้งเตือนสรุปกลุ่ม ผู้ใช้สามารถขยายกลุ่มการแจ้งเตือนที่ซ้อนกันเพื่อดูการแจ้งเตือนแต่ละรายการในกลุ่มได้ ดังที่แสดงในรูปที่ 1
แม้ว่า Android เวอร์ชันที่สูงกว่าจะไม่แสดงข้อความสรุปกลุ่มที่คุณออกแบบไว้ แต่คุณต้องตั้งค่าสรุปด้วยตนเองเพื่อเปิดใช้การแจ้งเตือนที่จัดกลุ่ม ลักษณะการทำงานของสรุปกลุ่มอาจแตกต่างกันไปในอุปกรณ์บางประเภท เช่น อุปกรณ์ที่สวมใส่ได้ การตั้งค่าข้อมูลอย่างละเอียดในสรุปกลุ่มจะช่วยมอบประสบการณ์การใช้งานที่ดีที่สุดในอุปกรณ์และเวอร์ชันทั้งหมด
หากต้องการเพิ่มสรุปกลุ่ม ให้ทำดังนี้
สร้างการแจ้งเตือนใหม่พร้อมคำอธิบายกลุ่ม ซึ่งมักจะทำได้ดีที่สุด ด้วยการแจ้งเตือนในรูปแบบกล่องจดหมาย
เพิ่มการแจ้งเตือนสรุปลงในกลุ่มโดยเรียกใช้
setGroupระบุว่าต้องใช้เป็นการแจ้งเตือนสรุปกลุ่มโดยเรียกใช้
setGroupSummary(true)
โค้ดต่อไปนี้แสดงตัวอย่างการสร้างสรุปกลุ่ม
// 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) }
รหัสการแจ้งเตือนสรุปต้องคงเดิมเพื่อให้ระบบโพสต์เพียงครั้งเดียวและคุณสามารถอัปเดตได้ในภายหลังหากข้อมูลสรุปมีการเปลี่ยนแปลง การเพิ่มข้อมูลลงในกลุ่มในภายหลังต้องส่งผลให้มีการอัปเดตสรุปที่มีอยู่
การจัดกลุ่มอัตโนมัติ
ใน Android 7.0 (ระดับ API 24) ขึ้นไป หากแอปส่งการแจ้งเตือนและไม่ได้ระบุคีย์กลุ่มหรือสรุปกลุ่ม ระบบอาจจัดกลุ่มการแจ้งเตือนเหล่านั้นเข้าด้วยกันโดยอัตโนมัติ การแจ้งเตือนที่จัดกลุ่มโดยอัตโนมัติจะปรากฏขึ้นพร้อมการแจ้งเตือนสรุปกลุ่ม โดยติดป้ายกำกับด้วยข้อความบางส่วนจากการแจ้งเตือนที่จัดกลุ่ม ผู้ใช้สามารถขยายการแจ้งเตือนสรุปนี้เพื่อดูการแจ้งเตือนแต่ละรายการได้เช่นเดียวกับการแจ้งเตือนที่จัดกลุ่มด้วยตนเอง
ลักษณะการทำงานของการจัดกลุ่มอัตโนมัติอาจแตกต่างกันไปในอุปกรณ์บางประเภท หากทราบว่าต้องจัดกลุ่มการแจ้งเตือน ให้ระบุคีย์กลุ่มและสรุปกลุ่มเพื่อให้แน่ใจว่าระบบจะจัดกลุ่มการแจ้งเตือนเหล่านั้น เพื่อมอบประสบการณ์การใช้งานที่ดีที่สุดในอุปกรณ์และเวอร์ชันทั้งหมด