เราได้เรียนรู้อะไรมากมายตั้งแต่การแจ้งเตือนและข้อความ Push เข้ามาอยู่ใน Chrome แล้ว ความคิดเห็นที่เฉพาะเจาะจงอย่างหนึ่งเกี่ยวกับอุปกรณ์ระดับเดสก์ท็อปคือ การแจ้งเตือนจะยังปรากฏอยู่บนหน้าจอของผู้ใช้จนกว่าผู้ใช้จะคอยปิดการแจ้งเตือน
เมื่อหน้าเว็บเปิดอยู่ คุณสามารถสร้างตัวจับเวลา JavaScript ง่ายๆ ซึ่งจะปิดการแจ้งเตือนโดยอัตโนมัติ แต่ปัจจุบันเราอยู่ในโลกที่มี Service Worker ซึ่งเป็นที่ที่เว็บแอปมีอายุการใช้งานเกินกรอบเวลาหนึ่ง และพนักงานบริการจะเข้าสู่โหมดสลีปให้เร็วที่สุดเพื่อประหยัดทรัพยากร ซึ่งหมายความว่าเราต้องการวิธีอื่นในการสร้างประสบการณ์ที่ดีให้แก่ผู้ใช้
มีการอัปเดตข้อกำหนดการแจ้งเตือนเมื่อเร็วๆ นี้เพื่อให้นักพัฒนาแอปสามารถระบุว่าระบบไม่ควรปิดการแจ้งเตือนโดยอัตโนมัติ
การแจ้งเตือนมีแฟล็กค่ากำหนดการโต้ตอบที่เกี่ยวข้องซึ่งยังไม่ได้ตั้งค่า เมื่อตั้งค่าแล้ว นั่นเป็นสัญญาณว่าในอุปกรณ์ที่มีหน้าจอขนาดใหญ่พอ การแจ้งเตือนควรพร้อมใช้งานจนกว่าผู้ใช้จะเปิดใช้งานหรือปิดการแจ้งเตือน
อาจจะฟังดูแปลกแต่ก็หมายความว่า ถ้าไม่ได้มีการแจ้งไว้เป็นอย่างอื่น ควรนำการแจ้งเตือนออกจากการแสดงผลในระยะเวลาสั้นๆ
ตอนนี้ Chrome 47 (เบต้าในเดือนตุลาคม 2015) รองรับตัวเลือก requireInteraction
แล้ว หากไม่ได้ระบุไว้และตั้งค่าเป็น true
ไว้อย่างชัดแจ้ง ระบบจะปิดการแจ้งเตือนทั้งหมดบนเดสก์ท็อปหลังผ่านไปประมาณ 20 วินาที แต่ส่วนที่น่าสนใจคือ Chrome ได้นำศูนย์การแจ้งเตือนออกจากแพลตฟอร์มเดสก์ท็อปทั้งหมด (ยกเว้น ChromeOS) เมื่อเร็วๆ นี้ ซึ่งหมายความว่าการแจ้งเตือนที่ย่อเล็กสุดจะถือเป็นการปิดและเข้าถึงได้ผ่านการเรียก getNotifications
ในโปรแกรมทำงานของบริการ
ใน Chrome สำหรับ Android เนื่องจากการแจ้งเตือนถูกย่อลงในพื้นที่ถาดการแจ้งเตือน ตัวเลือก requireInteraction
จะถูกละเว้น
navigator.serviceWorker.register('sw.js');
function showNotifications() {
Notification.requestPermission(function(result) {
if (result === 'granted') {
navigator.serviceWorker.ready.then(function(registration) {
registration.showNotification('requireInteraction: true', {
body: 'Requires interaction',
icon: '../images/touch/chrome-touch-icon-192x192.png',
requireInteraction: true,
tag: 'require-interaction'
});
registration.showNotification('requireInteraction: false', {
body: 'Does not require interaction',
icon: '../images/touch/chrome-touch-icon-192x192.png',
requireInteraction: false,
tag: 'no-require-interaction'
});
});
}
});
}