สร้างการแจ้งเตือนข้อมูลอัปเดตแบบเรียลไทม์

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

รูปที่ 1 ตัวอย่างการแจ้งเตือนข้อมูลอัปเดตแบบเรียลไทม์

การ์ดการแจ้งเตือนที่ได้รับการโปรโมตมีลักษณะที่ปรากฏดังนี้

  • ขยายโดยค่าเริ่มต้น
  • ยุบไม่ได้

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

ลักษณะของโปรโมชัน

API ต่อไปนี้จะช่วยคุณพิจารณาว่าระบบจะโปรโมตการแจ้งเตือนของคุณหรือไม่

  • Notification.FLAG_PROMOTED_ONGOING ระบุว่ามีการโปรโมตการแจ้งเตือนหรือไม่
  • Notification.hasPromotableCharacteristics() จะตรวจสอบว่าระบบสามารถโปรโมตการแจ้งเตือนได้หรือไม่ วิธีนี้จะไม่พิจารณาว่าผู้ใช้ปิดใช้ข้อมูลอัปเดตแบบเรียลไทม์สำหรับแอปในการตั้งค่าหรือไม่
  • NotificationManager.canPostPromotedNotifications() จะตรวจสอบว่าแอปของคุณสามารถโพสต์การแจ้งเตือนโปรโมชันได้หรือไม่ เช่น ผู้ใช้เปิดหรือปิดใช้การแจ้งเตือนดังกล่าวในการตั้งค่า
  • Settings.ACTION_MANAGE_APP_PROMOTED_NOTIFICATIONS คือการดำเนินการตาม Intent ที่อนุญาตให้แอปส่งผู้ใช้ไปยังการตั้งค่าเพื่อเปิดใช้ฟีเจอร์นี้

เกณฑ์การใช้งาน

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

รูปที่ 2 ข้อมูลอัปเดตแบบเรียลไทม์บนหน้าจอหลักและหน้าจอล็อก รวมถึงในรูปแบบชิป

ดำเนินอยู่

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

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

  • การใช้งานที่เหมาะสม: การนำทางที่ใช้งานอยู่ การโทรที่ดำเนินอยู่ การติดตามบริการร่วมเดินทางที่ใช้งานอยู่ และการติดตามการนำส่งอาหารที่ใช้งานอยู่
  • การใช้งานที่ไม่เหมาะสม: โฆษณา โปรโมชัน ข้อความแชท การแจ้งเตือน กิจกรรมในปฏิทินที่กำลังจะมาถึง และการเข้าถึงฟีเจอร์ของแอปอย่างรวดเร็ว

ผู้ใช้เป็นผู้เริ่ม

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

บางครั้งผู้ใช้อาจดำเนินการที่เริ่มต้นกิจกรรมในอนาคตเป็นระยะเวลาหนึ่ง เช่น หากผู้ใช้ซื้อตั๋วเครื่องบินหรือคอนเสิร์ต ลงชื่อสมัครเข้าร่วมการแข่งขัน หรือระบุว่าจะเข้าร่วมกิจกรรมที่ขึ้นอยู่กับเวลาในอนาคต ในกรณีเช่นนี้ การแสดงข้อมูลอัปเดตแบบเรียลไทม์โดยอัตโนมัติเมื่อกิจกรรมที่กำหนดเวลาไว้เริ่มต้นขึ้นอาจเป็นเรื่องที่เหมาะสม อย่างไรก็ตาม แอปต้องปรับแต่งทริกเกอร์ให้ปรากฏเฉพาะเมื่อกิจกรรมกำลังจะเกิดขึ้นเท่านั้น หากผู้ใช้ระบุอย่างชัดเจนว่าต้องการเริ่มติดตามเหตุการณ์ที่เกิดขึ้นในเบื้องหลัง เช่น การแข่งขันกีฬา คุณสามารถเริ่มโพสต์ข้อมูลอัปเดตแบบเรียลไทม์สำหรับเหตุการณ์นั้นได้ อย่างไรก็ตาม คุณควรใส่การดำเนินการเลิกปักหมุดไว้ในการแจ้งเตือนที่เกี่ยวข้องด้วย

มีความสำคัญต่อเวลา

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

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

แนวทางปฏิบัติเกี่ยวกับ UX

ใช้ไอคอนเครื่องมือติดตามเพื่อแสดงสถานะเป็นภาพ ซึ่งสามารถอัปเดตแบบไดนามิกได้

เครื่องมือติดตามที่กำหนดเองบนแถบความคืบหน้า
รูปที่ 3 ไอคอนอุปกรณ์ติดตามที่กำหนดเอง

เมื่อระบบกำลังคำนวณหรือยังไม่มี ETA อย่าแสดงสถานะว่างเปล่า ระบุข้อความตัวยึดตำแหน่งที่ใช้งานอยู่ เช่น "กำลังคิด..." หรือ "กำลังเปลี่ยนเส้นทาง..." เพื่อระบุว่าระบบกำลังทำงานอยู่ ดังที่แสดงในตัวอย่าง

nonempty state to show thinking
รูปที่ 4 สถานะที่ไม่ว่างเปล่าสำหรับข้อมูลอัปเดตแบบเรียลไทม์

ชิปสถานะ

ชิปสถานะช่วยให้ผู้ใช้ติดตามข้อมูลอัปเดตแบบเรียลไทม์ได้เมื่อไม่เห็นการแจ้งเตือน ใช้ setShortCriticalText หรือ setWhen เพื่อสื่อข้อมูลสถานะที่สำคัญเกี่ยวกับการแจ้งเตือนที่เน้นความคืบหน้า

ชิปสถานะพร้อมไอคอน
รูปที่ 5 สถานะไม่แน่นอนจะแสดงไอคอนขนาดเล็ก Notification.Builder#setSmallIcon
ชิปสถานะพร้อมเวลา
รูปที่ 6 ใช้ Notification.Builder#setShortCriticalText เพื่อแสดงเวลาแบบสัมบูรณ์
ชิปสถานะพร้อมข้อมูล
รูปที่ 7 ใช้ Notification.Builder#setShortCriticalText เพื่อสื่อสารข้อมูลสำคัญ

เมื่อเวลา

เวลา "เมื่อ" จะทริกเกอร์การนับถอยหลังสำหรับอายุการใช้งานของการแจ้งเตือน เว้นแต่การแจ้งเตือนจะถูกปิดหรืออัปเดต หัวข้อต่อไปนี้อธิบายวิธีการทำงานของเวลาในสถานการณ์ต่างๆ

  • เวลาในอนาคตอย่างน้อย 2 นาที: หากเวลาปัจจุบันคือ 10:05 น. และตั้งเวลาเป็น 10:10 น. ชิปจะแสดงข้อความว่า 5 นาที
  • เมื่อเวลาเป็นอดีต: ข้อความจะไม่แสดง
  • ตัวจับเวลาในชิปจะแสดงขึ้นเมื่อใช้โครโนมิเตอร์สำหรับเวลา ดูsetUsesChronometerและsetChronometerCountdown ตัวจับเวลาโครโนมิเตอร์จะแสดงในชิปตราบใดที่ยังมีค่าเป็นบวก
  • หากไม่ต้องการให้เวลาแสดงในการแจ้งเตือน ให้ใช้ setShowWhen เป็น FALSE

ลักษณะที่ปรากฏของชิปสถานะ

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

  • หากมีอักขระน้อยกว่า 7 ตัว ให้แสดงข้อความทั้งหมด
  • หากข้อความแสดงน้อยกว่าครึ่งหนึ่ง ให้แสดงเฉพาะไอคอนเท่านั้น
  • หากข้อความจะแสดงมากกว่าครึ่งหนึ่ง ให้แสดงข้อความให้มากที่สุดเท่าที่จะเป็นไปได้

Wear OS

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

การปิด

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

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

ดูแอปตัวอย่างเพื่อทดลองใช้ API เหล่านี้

คำถามที่พบบ่อย

คำถาม: จุดสีขาวที่ส่วนท้ายของแถบความคืบหน้าคืออะไร

สิ้นสุดสัญญาณบอกสถานะความคืบหน้าของการแสดงภาพการช่วยเหลือพิเศษ
รูปที่ 8 การแสดงภาพการช่วยเหลือพิเศษเมื่อสิ้นสุดการเดินทาง

คำตอบ: จุดสีขาวที่ส่วนท้ายของแถบความคืบหน้าจะแสดงให้เห็นจุดสิ้นสุดของแถบความคืบหน้า

คำถาม: เหตุใดระบบจึงไม่รองรับการแจ้งเตือนที่กำหนดเองสำหรับข้อมูลอัปเดตแบบเรียลไทม์

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