การใช้ Notifications API

เออร์เนสต์ เดลกาโด
Ernest Delgado

เกริ่นนำ

Notifications API ช่วยให้คุณแสดงการแจ้งเตือนผู้ใช้เกี่ยวกับเหตุการณ์ที่กำหนดได้ ทั้งการแจ้งเตือนแบบไม่ต้องทำอะไรเลย (อีเมล ทวีต หรือกิจกรรมในปฏิทินใหม่) และการโต้ตอบของผู้ใช้ ไม่ว่าแท็บใดจะโฟกัสอยู่ที่แท็บใด มีข้อกำหนดร่าง แต่ปัจจุบันยังไม่อยู่ในมาตรฐานใดๆ

คุณสามารถทำตามขั้นตอนง่ายๆ เหล่านี้เพื่อใช้การแจ้งเตือนในเวลาเพียงไม่กี่นาที

ขั้นตอนที่ 1: ตรวจสอบการสนับสนุน Notifications API

เราจะตรวจสอบว่าระบบรองรับ webkitNotifications หรือไม่ โปรดทราบว่าชื่อของ webkitNotifications เป็นส่วนหนึ่งของข้อกำหนดฉบับร่าง ข้อกำหนดขั้นสุดท้ายจะมีฟังก์ชัน notifications() แทน

// check for notifications support
// you can omit the 'window' keyword
if (window.webkitNotifications) {
console.log("Notifications are supported!");
}
else {
console.log("Notifications are not supported for this Browser/OS version yet.");
}

ขั้นตอนที่ 2: อนุญาตให้ผู้ใช้ให้สิทธิ์แก่เว็บไซต์เพื่อแสดงการแจ้งเตือน

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

document.querySelector('#show_button').addEventListener('click', function() {
if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
// function defined in step 2
window.webkitNotifications.createNotification(
    'icon.png', 'Notification Title', 'Notification content...');
} else {
window.webkitNotifications.requestPermission();
}
}, false);

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

แถบข้อมูลสิทธิ์การแจ้งเตือนใน Google Chrome
แถบข้อมูลสิทธิ์การแจ้งเตือนใน Google Chrome

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

ขั้นตอนที่ 3: แนบ Listener และการดำเนินการอื่นๆ

document.querySelector('#show_button').addEventListener('click', function() {
  if (window.webkitNotifications.checkPermission() == 0) { // 0 is PERMISSION_ALLOWED
    // function defined in step 2
    notification_test = window.webkitNotifications.createNotification(
      'icon.png', 'Notification Title', 'Notification content...');
    notification_test.ondisplay = function() { ... do something ... };
    notification_test.onclose = function() { ... do something else ... };
    notification_test.show();
  } else {
    window.webkitNotifications.requestPermission();
  }
}, false);

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