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

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

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

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

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

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

  • ต้องเป็นแบบมาตรฐาน/ไม่มีสไตล์ BigTextStyle, CallStyle หรือ ProgressStyle
  • ต้องขอสิทธิ์ที่ไม่ใช่รันไทม์ต่อไปนี้ในไฟล์ AndroidManifest android.permission.POST_PROMOTED_NOTIFICATIONS
  • ต้องขอรับโปรโมชันโดยใช้ EXTRA_REQUEST_PROMOTED_ONGOING หรือ NotificationCompat.Builder#requestPromotedOngoing
  • ต้องเป็น ongoing (ตั้งค่า FLAG_ONGOING_EVENT)
  • ต้องมีชุด contentTitle
  • ต้องไม่มีการตั้งค่า customContentView (ไม่มี RemoteViews)
  • ต้องไม่ใช่ข้อมูลสรุปของกลุ่มที่ใช้ setGroupSummary
  • ต้องไม่ setColorized ถึง TRUE
  • ช่องทางการแจ้งเตือนต้องไม่มีIMPORTANCE_MIN

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

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

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

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

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

ดำเนินอยู่

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

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

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

เริ่มโดยผู้ใช้

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

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

มีความละเอียดอ่อนด้านเวลา

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

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

ชิปสถานะ

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

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

เมื่อเวลา

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

  • หากเวลา "เมื่อ" อยู่ในอนาคตอย่างน้อย 2 นาที เช่น หากเวลาปัจจุบันคือ 10:05 น. และตั้งเวลา "เมื่อ" เป็น 10:10 น. ชิปจะแสดงว่า "5 นาที"
  • หากเวลา "เมื่อ" ย้อนหลังไปมากกว่า 1 นาที ระบบจะไม่แสดงการแจ้งเตือน
  • ใช้ setShowWhen เพื่อFALSEหากไม่ต้องการให้การแจ้งเตือนที่แสดงใน เฉดสีมีเวลา

ลักษณะของชิปสถานะ

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

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

การปิด

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

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

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