Notification in Android ตอนที่ 7 — การแจ้งเตือนแบบ Heads-up notification
หลังจากได้เรียนรู้การใช้งานและความสามารถสำคัญต่างๆของ Notification ในบทความที่ผ่านมา คราวนี้ก็ขอหยิบเรื่อง Heads-up Notification มาเล่าให้ฟังกันต่อ
บทความในซีรีย์เดียวกัน
- ตอนที่ 1 — เรื่องพื้นฐานของ Notification ที่ควรรู้
- ตอนที่ 2 — คำสั่งพื้นฐานของ Notification
- ตอนที่ 3 — ทำให้ Notification สมบูรณ์ยิ่งขึ้น
- ตอนที่ 4 — Notification Action
- ตอนที่ 5 — Notification Channel
- ตอนที่ 6 — กำหนด Notification Style ในรูปแบบต่างๆ
- ตอนที่ 7 — การแจ้งเตือนแบบ Heads-up notification [Now Reading]
- ตอนที่ 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 Importance
val channel = NotificationChannel(/* ID */, /* Name */, NotificationManager.IMPORTANCE_HIGH)
ส่วน Notification Channel ที่กำหนด Importance ไว้ต่ำกว่านั้น ก็จะถือว่าไม่สำคัญมากนักและจะแสดงผลแบบปกติ
เวอร์ชันที่ต่ำกว่า Android 8.0 Oreo (API 26)
Notification ที่กำหนด Priority เป็น High Priority และกำหนดให้มีเสียงหรือสั่น จะแสดงเป็นแบบ Heads-up Notification
val 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 ของแอปไปตลอดกาล