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