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