API ทริกเกอร์การแจ้งเตือน

ทริกเกอร์การแจ้งเตือนช่วยให้คุณตั้งเวลาการแจ้งเตือนในเครื่องที่ไม่ต้องใช้การเชื่อมต่อเครือข่าย จึงเหมาะสำหรับกรณีการใช้งานอย่างเช่นแอปปฏิทิน

ทริกเกอร์การแจ้งเตือนคืออะไร

นักพัฒนาเว็บสามารถแสดงการแจ้งเตือนโดยใช้ Web Notifications API ฟีเจอร์นี้มักจะใช้กับ พุช API เพื่อแจ้งให้ผู้ใช้ทราบถึงข้อมูลที่ขึ้นอยู่กับเวลา เช่น ว่าเป็นเหตุการณ์ข่าวด่วนหรือข้อความที่ได้รับ ระบบจะแสดงการแจ้งเตือนโดยการเรียกใช้ JavaScript บน อุปกรณ์ของผู้ใช้

ปัญหาของ Push API คือเรียกใช้การแจ้งเตือนซึ่งต้องไม่น่าเชื่อถือ แสดงเมื่อเป็นไปตามเงื่อนไขเฉพาะ เช่น เวลาหรือสถานที่ ตัวอย่างของแท็ก เงื่อนไข คือการแจ้งเตือนปฏิทินที่จะเตือนคุณเกี่ยวกับการประชุมสำคัญกับเจ้านายของคุณที่ 14.00 น. ตัวอย่างของเงื่อนไขตามสถานที่ตั้ง ได้แก่ การแจ้งเตือนที่ช่วยเตือนให้คุณซื้อนม เมื่อคุณป้อนบริเวณใกล้ๆ กับร้านขายของชำ การเชื่อมต่อเครือข่ายหรือการถนอมแบตเตอรี่ อย่างโหมด Doze อาจทำให้การแสดงข้อความ Push ล่าช้าลง

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

กรณีการใช้งาน

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

เครือข่ายทีวีอาจช่วยเตือนผู้ใช้ว่ารายการทีวีโปรดกำลังจะเริ่มหรือการประชุมถ่ายทอดสด กำลังจะเริ่มสตรีม

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

สถานะปัจจุบัน

ขั้นตอน สถานะ
1. สร้างคำอธิบาย เสร็จสมบูรณ์
2. สร้างข้อกำหนดคร่าวๆ เบื้องต้น ยังไม่เริ่ม
3. รวบรวมความคิดเห็นและทำซ้ำในการออกแบบ กำลังดำเนินการ
4. ช่วงทดลองใช้จากต้นทาง เสร็จสมบูรณ์
5. เปิดตัว ยังไม่เริ่ม

วิธีใช้ทริกเกอร์การแจ้งเตือน

การเปิดใช้ผ่าน about://flags

หากต้องการทดสอบกับ Notification Triggers API ภายในเครื่องโดยไม่มีโทเค็นช่วงทดลองใช้จากต้นทาง ให้เปิดใช้ การแจ้งว่าไม่เหมาะสม #enable-experimental-web-platform-features ใน about://flags

การตรวจหาฟีเจอร์

คุณสามารถทราบว่าเบราว์เซอร์รองรับทริกเกอร์การแจ้งเตือนหรือไม่โดยตรวจสอบการมีอยู่ของทริกเกอร์ พร็อพเพอร์ตี้ showTrigger:

if ('showTrigger' in Notification.prototype) {
  /* Notification Triggers supported */
}

การตั้งเวลาการแจ้งเตือน

การกำหนดเวลาการแจ้งเตือนคล้ายกับการแสดงข้อความ Push ตามปกติ เพียงแต่คุณจะต้องทำดังนี้ ส่งพร็อพเพอร์ตี้เงื่อนไข showTrigger ที่มีออบเจ็กต์ TimestampTrigger เป็นค่าไปยังฟังก์ชัน options ของการแจ้งเตือน

const createScheduledNotification = async (tag, title, timestamp) => {
  const registration = await navigator.serviceWorker.getRegistration();
  registration.showNotification(title, {
    tag: tag,
    body: 'This notification was scheduled 30 seconds ago',
    showTrigger: new TimestampTrigger(timestamp + 30 * 1000),
  });
};

การยกเลิกการแจ้งเตือนที่กำหนดเวลาไว้

หากต้องการยกเลิกการแจ้งเตือนที่ตั้งเวลาไว้ ให้ส่งคำขอรายการการแจ้งเตือนทั้งหมดที่ตรงกับ ผ่าน ServiceWorkerRegistration.getNotifications() โปรดทราบว่าคุณต้องส่ง includeTriggered ตั้งค่าสถานะการแจ้งเตือนตามกำหนดเวลาเพื่อให้รวมอยู่ในรายการ:

const cancelScheduledNotification = async (tag) => {
  const registration = await navigator.serviceWorker.getRegistration();
  const notifications = await registration.getNotifications({
    tag: tag,
    includeTriggered: true,
  });
  notifications.forEach((notification) => notification.close());
};

การแก้ไขข้อบกพร่อง

คุณใช้แผงการแจ้งเตือนของ Chrome DevTools เพื่อแก้ไขข้อบกพร่องของการแจ้งเตือนได้ ในการเริ่มดำเนินการ การแก้ไขข้อบกพร่อง ให้กดเริ่มบันทึกกิจกรรม เริ่มบันทึกเหตุการณ์ หรือ Control+E (Command+E ใน Mac) ระเบียนใน Chrome DevTools กิจกรรมการแจ้งเตือนทั้งหมด รวมถึงการแจ้งเตือนที่กำหนดเวลาไว้ การแจ้งเตือนที่แสดง และเมื่อปิดการแจ้งเตือนแล้วเป็นเวลา 3 วัน แม้ว่าจะปิดเครื่องมือสำหรับนักพัฒนาเว็บอยู่ก็ตาม

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

สาธิต

คุณดูการทำงานของทริกเกอร์การแจ้งเตือนได้ในการสาธิต ซึ่งจะช่วยให้คุณกำหนดเวลา การแจ้งเตือน แสดงรายการการแจ้งเตือนที่กำหนดเวลาไว้ และยกเลิก ซอร์สโค้ดมีอยู่ใน Glitch

วันที่ ภาพหน้าจอของเว็บแอปสาธิตทริกเกอร์การแจ้งเตือน
การสาธิตทริกเกอร์การแจ้งเตือน

ความปลอดภัยและสิทธิ์

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

การควบคุมของผู้ใช้

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

ความโปร่งใส

API นี้ต่างจาก Push API ตรงที่จะไม่ขึ้นอยู่กับเครือข่าย ซึ่งบอกเป็นนัยถึงการแจ้งเตือนที่กำหนดเวลาไว้ ต้องการข้อมูลที่จำเป็นทั้งหมดก่อน ซึ่งรวมถึงทรัพยากรรูปภาพที่ badge, icon และอ้างอิง image ซึ่งหมายความว่านักพัฒนาแอปจะไม่เห็นการแจ้งเตือนที่กำหนดเวลาไว้ และจะไม่เกี่ยวข้องกับการปลุกโปรแกรม Service Worker จนกว่าผู้ใช้จะโต้ตอบกับการแจ้งเตือน ด้วยเหตุนี้ ขณะนี้นักพัฒนาแอปจึงไม่ทราบข้อมูลเกี่ยวกับผู้ใช้ ผ่านวิธีที่อาจรุกล้ำความเป็นส่วนตัว เช่น การค้นหาตำแหน่งทางภูมิศาสตร์ของที่อยู่ IP การออกแบบนี้ยัง ทำให้ฟีเจอร์สามารถเลือกใช้กลไกการกำหนดเวลาที่ระบบปฏิบัติการมีให้ เช่น AlarmManager ของ Android ซึ่งจะช่วยถนอมแบตเตอรี่

ความคิดเห็น

ทีม Chrome ต้องการทราบประสบการณ์ของคุณเกี่ยวกับทริกเกอร์การแจ้งเตือน

บอกเราเกี่ยวกับการออกแบบ API

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

หากมีปัญหาในการติดตั้งใช้งาน

คุณพบข้อบกพร่องในการติดตั้งใช้งาน Chrome ไหม หรือการติดตั้งใช้งานแตกต่างจากข้อกําหนดหรือไม่ รายงานข้อบกพร่องที่ new.crbug.com อย่าลืมใส่รายละเอียดให้มากที่สุด วิธีการง่ายๆ สำหรับการทำซ้ำและตั้งค่าคอมโพเนนต์เป็น UI>Notifications Glitch ทำงานได้ดี เพื่อแชร์ข้อบกพร่องที่ง่ายและรวดเร็ว

หากกำลังวางแผนที่จะใช้ API

หากคุณกำลังวางแผนจะใช้ทริกเกอร์การแจ้งเตือนบนเว็บไซต์ การสนับสนุนสาธารณะของคุณจะช่วยให้เราจัดลำดับความสำคัญ ฟีเจอร์ต่างๆ และแสดงให้ผู้ให้บริการเบราว์เซอร์รายอื่นเห็นถึงความสำคัญในการสนับสนุนของตน ส่งทวีตถึง @ChromiumDev โดยใช้แฮชแท็ก #NotificationTriggers และแจ้งให้เราทราบถึงตำแหน่งและวิธีที่คุณใช้งาน

ลิงก์ที่มีประโยชน์

กิตติกรรมประกาศ

Richard Knoll เป็นผู้เรียกใช้การแจ้งเตือน และคำอธิบายที่เขียนโดย Peter Beverloo โดยมี ที่ได้รับจาก Richard บุคคลต่อไปนี้ได้อ่านบทความนี้ Joe Medley, Pete LePage รวมถึง Richard และ Peter รูปภาพหลักโดย Lukas Blazek ใน Unsplash