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

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

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

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

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

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

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

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

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

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

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

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

ดำเนินอยู่

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

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

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

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

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

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

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

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

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

ชิปสถานะ

ชิปสถานะช่วยให้ผู้ใช้ติดตามข้อมูลอัปเดตแบบเรียลไทม์ได้เมื่อไม่เห็นการแจ้งเตือน ใช้ 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 เพื่อตรวจหาการอัปเดตที่ปิดไปแล้ว