หลังจากได้เรียนรู้การใช้งานและความสามารถสำคัญต่างๆของ Notification ในบทความที่ผ่านมา คราวนี้ก็ขอหยิบเรื่อง Heads-up Notification มาเล่าให้ฟังกันต่อ
บทความในซีรีย์เดียวกัน
• Notification in Android ตอนที่ 1 - เรื่องพื้นฐานของ Notification ที่ควรรู้• Notification in Android ตอนที่ 2 - คำสั่งพื้นฐานของ Notification
• Notification in Android ตอนที่ 3 - ทำให้ Notification สมบูรณ์ยิ่งขึ้น
• Notification in Android ตอนที่ 4 - Notification Action
• Notification in Android ตอนที่ 5 - Notification Channel
• Notification in Android ตอนที่ 6 - กำหนด Notification Style ในรูปแบบต่างๆ
• Notification in Android ตอนที่ 7 - การแจ้งเตือนแบบ Heads-up notification
• Notification in Android ตอนที่ 8 - อัปเดตข้อมูลให้กับ Notification
Heads-up Notification
เป็นความสามารถของ Notification ที่ถูกเพิ่มเข้ามาใน Android 5.0 Lollipop (API 21) เพื่อทำให้การแสดง Notification เป็นที่ดึงดูดสายตาแก่ผู้ใช้มากขึ้น ซึ่งจะช่วยให้ Notification ที่มีความสำคัญมากๆถูกมองเห็นได้ง่ายขึ้นที่ต้องทำเช่นนี้ก็เพราะว่าทีมแอนดรอยด์ให้ความสำคัญกับความเป็นส่วนตัวของผู้ใช้สูงมาก แต่ในขณะเดียวกันก็มองว่า Notification นั้นมีทั้งแบบที่สำคัญมากและไม่สำคัญ ดังนั้นควรแบ่งรูปแบบการแสดงผลของ Notification ตามความสำคัญเพื่อไม่ให้ Notification แสดงบ่อยจนรบกวนผู้ใช้จนเกินไป
การแสดงผลของ Notification ในแต่ละแบบ
Notification ที่ไม่สำคัญมากนัก
สำหรับ Notification ที่ระบบแอนดรอยด์มองว่าเป็น Notification ที่ไม่ได้สำคัญมากนัก จะทำการแสดงไอคอนของ Notification ที่ข้างบน System Bar พร้อมกับเสียง (ถ้าผู้ใช้เปิดให้มีเสียงแจ้งเตือน)Notification ที่สำคัญมาก
สำหรับ Notification ที่ระบบแอนดรอยด์มองว่ามีความสำคัญมาก จะทำการแสดงเป็น Heads-up Notification ขึ้นมาให้ผู้ใช้เห็นอย่างชัดเจนจะเห็นว่าการแสดงผลแบบ Heads-up Notification จะเด่นมากและบังหน้าจอข้างบนบางส่วน และแสดงนาน 6 วินาที (แต่ผู้ใช้ก็สามารถปัดเพื่อปิดได้ทันทีเช่นกัน)
จึงเป็นที่มาว่าทำไมทีมแอนดรอยด์จึงต้องกำหนดให้เฉพาะ Notification ที่มีความสำคัญมากเท่านั้นที่จะแสดงในรูปแบบนี้ เพราะผู้ใช้คงไม่แฮปปี้ซักเท่าไรถ้า Notification ทั้งหมดในเครื่องเป็นแบบนี้
เงื่อนไขในการแสดงแบบ Heads-up Notification
การแสดงแบบ Heads-up Notification จะมีเงื่อนไขที่แตกต่างกันไปตามเวอร์ชันของแอนดรอยด์ดังนี้ตั้งแต่ Android 8.0 Oreo (API 26) ขึ้นไป
จะแสดง Heads-up Notification เฉพาะ Notification ของ Notification Channel ที่กำหนดเป็น High Importanceval channel0 = NotificationChannel(/* ID */, /* Name */, NotificationManager.IMPORTANCE_HIGH)
ส่วน Notification Channel ที่กำหนด Importance ไว้ต่ำกว่านั้น ก็จะถือว่าไม่สำคัญมากนักและจะแสดงผลแบบปกติ
เวอร์ชันที่ต่ำกว่า Android 8.0 Oreo (API 26)
Notification ที่กำหนด Priority เป็น High Priority และกำหนดให้มีเสียงหรือสั่น จะแสดงเป็นแบบ Heads-up Notificationval notification = NotificationCompat.Builder(...).apply {
...
priority = NotificationCompat.PRIORITY_HIGH
setVibrate(longArrayOf(0))
}.build()
ถึงแม้ว่า Notification กำหนดเป็น High Priority แต่ถ้าไม่มีเสียงหรือสั่น ก็จะแสดงผลแบบปกติ จึงเป็นที่มาว่าทำไมจึงต้องใช้คำสั่ง setVibrate(...) เพื่อช่วยทำให้ Notification แสดงเป็น Heads-up Notification
Notification บางตัวก็ไม่จำเป็นต้องใช้ Heads-up Notification
เพราะ Heads-up Notification เป็นการแสดงผลที่รบกวนผู้ใช้สูงมาก ดังนั้นจึงควรแบ่งลำดับความสำคัญของ Notification ให้เหมาะสม อันไหนที่สำคัญจริงๆและเร่งด่วนมากๆก็ทำให้เป็น Heads-up Notification ส่วนอันไหนที่ไม่ได้สำคัญมากก็ให้แสดงแบบปกติอย่าให้ทุกอันแสดงเป็น Heads-up Notification จนผู้ใช้รำคาญและปิดการแสดง Notification ของแอปไปตลอดกาล