ทริกเกอร์การแจ้งเตือนช่วยให้คุณตั้งเวลาการแจ้งเตือนในเครื่องที่ไม่ต้องใช้การเชื่อมต่อเครือข่าย จึงเหมาะสำหรับกรณีการใช้งานอย่างเช่นแอปปฏิทิน
ทริกเกอร์การแจ้งเตือนคืออะไร
นักพัฒนาเว็บแสดงการแจ้งเตือนได้โดยใช้ Web Notifications API ฟีเจอร์นี้มักจะใช้กับ Push API เพื่อแจ้งให้ผู้ใช้ทราบถึงข้อมูลที่ขึ้นอยู่กับเวลา เช่น เหตุการณ์ข่าวด่วนหรือข้อความที่ได้รับ ซึ่งจะแสดงโดยการเรียกใช้ JavaScript บนอุปกรณ์ของผู้ใช้
ปัญหาของ Push API คือ API ดังกล่าวไม่น่าเชื่อถือสำหรับการทริกเกอร์การแจ้งเตือน ซึ่งต้องแสดงเมื่อตรงกับเงื่อนไขบางอย่าง เช่น เวลาหรือสถานที่ ตัวอย่างของเงื่อนไขตามเวลาคือการแจ้งเตือนในปฏิทินที่จะเตือนคุณว่ามีการประชุมสำคัญกับหัวหน้าในเวลา 14:00 น. ตัวอย่างของเงื่อนไขตามสถานที่ ได้แก่ การแจ้งเตือนที่เตือนให้คุณซื้อนมเมื่อเข้าสู่บริเวณใกล้กับร้านขายของชำ การเชื่อมต่อเครือข่ายหรือฟีเจอร์ประหยัดแบตเตอรี่ อย่างโหมด Doze อาจทำให้การแสดงข้อความ Push ล่าช้าลง
ทริกเกอร์การแจ้งเตือนจะแก้ปัญหานี้โดยให้คุณกำหนดเวลาการแจ้งเตือนด้วยเงื่อนไขในการเรียกใช้ล่วงหน้า เพื่อให้ระบบปฏิบัติการส่งการแจ้งเตือนในเวลาที่เหมาะสมแม้ว่าจะไม่มีการเชื่อมต่อเครือข่ายหรืออุปกรณ์อยู่ในโหมดประหยัดแบตเตอรี่ก็ตาม
กรณีการใช้งาน
แอปพลิเคชันปฏิทินสามารถใช้ทริกเกอร์การแจ้งเตือนตามเวลาเพื่อเตือนผู้ใช้เกี่ยวกับการประชุมที่กำลังจะเกิดขึ้น รูปแบบการแจ้งเตือนเริ่มต้นสำหรับแอปปฏิทินอาจเป็นการแสดงการแจ้งเตือนล่วงหน้าครั้งแรก 1 ชั่วโมงก่อนการประชุม และแสดงการแจ้งเตือนเร่งด่วนอีก 5 นาทีก่อนการประชุม
เครือข่ายทีวีอาจช่วยเตือนผู้ใช้ว่ารายการทีวีโปรดกำลังจะเริ่มหรือสตรีมแบบสดของการประชุมกำลังจะเริ่มแล้ว
เว็บไซต์การแปลงเขตเวลาสามารถใช้ทริกเกอร์การแจ้งเตือนตามเวลาเพื่อให้ผู้ใช้กำหนดเวลาปลุกสำหรับการประชุมทางโทรศัพท์หรือวิดีโอคอลได้
สถานะปัจจุบัน
ขั้นตอน | สถานะ |
---|---|
1. สร้างคำอธิบาย | เสร็จสมบูรณ์ |
2. สร้างข้อกำหนดคร่าวๆ เบื้องต้น | Not started |
3. รวบรวมความคิดเห็นและทำซ้ำในการออกแบบ | กำลังดำเนินการ |
4. ช่วงทดลองใช้จากต้นทาง | เสร็จสมบูรณ์ |
5. เปิดตัว | Not started |
วิธีใช้ทริกเกอร์การแจ้งเตือน
การเปิดใช้ผ่าน about://flags
หากต้องการทดสอบกับ Notification Triggers API ภายในเครื่องโดยไม่มีโทเค็นช่วงทดลองใช้จากต้นทาง ให้เปิดใช้ Flag #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 ซึ่งอยู่ในแผงแอปพลิเคชัน](https://developer.chrome.google.cn/static/docs/web-platform/notification-triggers/image/a-scheduled-notification-1bbf14c57c2da.png?authuser=6&hl=th)
![เหตุการณ์การแจ้งเตือนที่แสดงได้บันทึกลงในแผงการแจ้งเตือนของ Chrome DevTools](https://developer.chrome.google.cn/static/docs/web-platform/notification-triggers/image/a-displayed-notification-d54816e76c8f2.png?authuser=6&hl=th)
ข้อมูลประชากร
คุณดูการทำงานของทริกเกอร์การแจ้งเตือนได้ในการสาธิต ซึ่งจะช่วยให้คุณกำหนดเวลาการแจ้งเตือน แสดงการแจ้งเตือนที่กำหนดเวลาไว้ และยกเลิกการดำเนินการได้ มีซอร์สโค้ดอยู่ใน Glitch
![ภาพหน้าจอของเว็บแอปสาธิตทริกเกอร์การแจ้งเตือน](https://developer.chrome.google.cn/static/docs/web-platform/notification-triggers/image/a-screenshot-the-notific-8bf4469e1c556.png?authuser=6&hl=th)
ความปลอดภัยและสิทธิ์
ทีม Chrome ได้ออกแบบและใช้งาน Notification Triggers API โดยใช้หลักการสำคัญที่กำหนดไว้ในการควบคุมการเข้าถึงฟีเจอร์แพลตฟอร์มเว็บที่มีประสิทธิภาพ รวมถึงการควบคุมผู้ใช้ ความโปร่งใส และการยศาสตร์ เนื่องจาก API นี้ต้องใช้ Service Worker จึงต้องมีบริบทที่ปลอดภัยด้วย การใช้ API จะต้องมีสิทธิ์เหมือนกับข้อความ Push ทั่วไป
การควบคุมของผู้ใช้
API นี้ใช้ได้เฉพาะในบริบทของ ServiceWorkerRegistration
เท่านั้น ซึ่งหมายความว่าระบบจะจัดเก็บข้อมูลที่จำเป็นทั้งหมดในบริบทเดียวกัน และจะถูกลบออกโดยอัตโนมัติเมื่อมีการลบ Service Worker หรือผู้ใช้ลบข้อมูลเว็บไซต์ทั้งหมดของต้นทาง การบล็อกคุกกี้ยังป้องกันไม่ให้โปรแกรมทำงานของบริการติดตั้งใน Chrome ทำให้ไม่สามารถใช้ API นี้ได้ ผู้ใช้สามารถปิดการแจ้งเตือนของเว็บไซต์ได้ในการตั้งค่าเว็บไซต์
ความโปร่งใส
API นี้ต่างจากพุช API ตรงที่ API นี้ไม่ได้ขึ้นอยู่กับเครือข่าย ซึ่งหมายความว่าการแจ้งเตือนที่กำหนดเวลาไว้ต้องการข้อมูลที่จำเป็นทั้งหมดล่วงหน้า รวมถึงทรัพยากรรูปภาพที่อ้างอิงถึงโดยแอตทริบิวต์ badge
, icon
และ image
ซึ่งหมายความว่านักพัฒนาซอฟต์แวร์จะสังเกตการแจ้งเตือนที่กำหนดเวลาไว้ไม่ได้และไม่เกี่ยวข้องกับการปลุกระบบ Service Worker จนกว่าผู้ใช้จะโต้ตอบกับการแจ้งเตือน
ด้วยเหตุนี้ นักพัฒนาแอปจึงไม่ทราบข้อมูลเกี่ยวกับผู้ใช้ผ่านวิธีที่อาจรุกล้ำความเป็นส่วนตัว เช่น การค้นหาตำแหน่งทางภูมิศาสตร์ของที่อยู่ IP ในขณะนี้ การออกแบบนี้ยังช่วยให้ฟีเจอร์เลือกใช้ประโยชน์จากกลไกการตั้งเวลาที่ระบบปฏิบัติการอย่างเช่น AlarmManager
ของ Android ได้ซึ่งช่วยถนอมแบตเตอรี่
ความคิดเห็น
ทีม Chrome ต้องการทราบประสบการณ์ของคุณเกี่ยวกับทริกเกอร์การแจ้งเตือน
บอกเราเกี่ยวกับการออกแบบ API
มีบางอย่างเกี่ยวกับ API ที่ไม่ทำงานตามที่คุณคาดหวังหรือไม่ หรือยังไม่มีวิธีการหรือคุณสมบัติ ที่คุณต้องใช้เพื่อนำไอเดียของคุณไปปฏิบัติ หากมีข้อสงสัยหรือความคิดเห็น เกี่ยวกับรูปแบบการรักษาความปลอดภัย แจ้งปัญหาเกี่ยวกับการแจ้งเตือนที่ทริกเกอร์ที่เก็บ GitHub หรือเพิ่มความเห็นเกี่ยวกับปัญหาที่มีอยู่
หากมีปัญหาในการติดตั้งใช้งาน
คุณพบข้อบกพร่องในการติดตั้งใช้งาน Chrome ไหม หรือการติดตั้งใช้งานแตกต่างจากข้อกําหนดหรือไม่
รายงานข้อบกพร่องที่ new.crbug.com ตรวจสอบว่าได้ใส่รายละเอียดมากที่สุดเท่าที่ทำได้ วิธีการง่ายๆ ในการจำลองซ้ำ และตั้งค่าคอมโพเนนต์เป็น UI>Notifications
Glitch ทำงานได้ดีใน
การแชร์การทำซ้ำข้อบกพร่องที่ง่ายและรวดเร็ว
หากกำลังวางแผนที่จะใช้ API
หากคุณกำลังวางแผนจะใช้ทริกเกอร์การแจ้งเตือนบนเว็บไซต์ การสนับสนุนสาธารณะของคุณช่วยให้เราสามารถจัดลำดับความสำคัญของคุณลักษณะ
และแสดงให้ผู้ให้บริการเบราว์เซอร์รายอื่นเห็นว่าการสนับสนุนเบราว์เซอร์นั้นสำคัญเพียงใด ส่งทวีตไปที่
@ChromiumDev โดยใช้แฮชแท็ก
#NotificationTriggers
และแจ้งให้เราทราบว่าคุณใช้งานที่ไหนและอย่างไร
ลิงก์ที่มีประโยชน์
- คำอธิบายแบบสาธารณะ
- การสาธิตทริกเกอร์การแจ้งเตือน | แหล่งที่มาการสาธิตทริกเกอร์การแจ้งเตือน
- ข้อบกพร่องในการติดตาม
- รายการ ChromeStatus.com
- คอมโพเนนต์การกะพริบ:
UI>Notifications
กิตติกรรมประกาศ
ทริกเกอร์การแจ้งเตือนดำเนินการโดย Richard Knoll และวิดีโออธิบายที่เขียนโดย Peter Beverloo โดยการสนับสนุนจาก Richard มีผู้อ่านบทความต่อไปนี้ Joe Medley, Pete LePage รวมถึง Richard และ Peter รูปภาพหลักโดย Lukas Blazek ใน Unsplash