ממשק API להפעלת התראות

התכונה 'טריגרים של התראות' מאפשרת לכם לתזמן התראות מקומיות שלא דורשות חיבור לרשת, ולכן הן אידיאליות לתרחישי שימוש כמו אפליקציות יומן.

מהם טריגרים של התראות?

מפתחי אתרים יכולים להציג התראות באמצעות Web Notifications API. התכונה הזו משמשת לעיתים קרובות עם Push API כדי ליידע את המשתמשים על מידע רגיש לזמן, כמו אירועים חדשותיים או הודעות שהתקבלו. ההתראות מוצגות על ידי הפעלת JavaScript במכשיר של המשתמש.

הבעיה ב-Push API היא שהוא לא אמין להפעלת התראות שחייבות להיות מוצגות כשמתקיים תנאי מסוים, כמו שעה או מיקום. דוגמה לתנאי מבוסס-זמן היא תזכורת ביומן לפגישה חשובה עם הבוס בשעה 14:00. דוגמה לתנאי מבוסס-מיקום היא התראה שמזכירה לכם לקנות חלב כשאתם נכנסים לסביבת הסופר. הקישוריות לרשת או תכונות לחיסכון בסוללה, כמו מצב שינה, עלולות לעכב את המסירה של התראות מבוססות-דחיפה.

התראות מופעלות פותרות את הבעיה הזו בכך שהן מאפשרות לתזמן התראות עם תנאי ההפעלה שלהן מראש, כך שמערכת ההפעלה תציג את ההתראה בזמן הנכון גם אם אין קישוריות לרשת או שהמכשיר נמצא במצב חיסכון בסוללה.

תרחישים לדוגמה

אפליקציות של יומנים יכולות להשתמש בטריגרים של התראות מבוססות-זמן כדי להזכיר למשתמש פגישות קרובות. לדוגמה, ערכת ההתראות שמוגדרת כברירת מחדל באפליקציית יומן יכולה להיות התראה ראשונה שמוצגת שעה לפני הפגישה, ואז התראה נוספת ודחופה יותר שמוצגת חמש דקות לפני הפגישה.

למשל, ערוץ טלוויזיה יכול לשלוח למשתמשים תזכורת שהתוכנית האהובה עליהם עומדת להתחיל, או ששידור חי של כנס עומד להתחיל.

אתרים להמרת אזורי זמן יכולים להשתמש בטריגרים של התראות מבוססות-זמן כדי לאפשר למשתמשים לתזמן אזעקות לשיחות ועידה או לשיחות וידאו.

הסטטוס הנוכחי

שלב סטטוס
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 */
}

תזמון התראה

תזמון התראה דומה להצגת התראה רגילה מאפליקציה, רק שצריך להעביר מאפיין תנאי 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());
};

ניפוי באגים

אפשר להשתמש בחלונית Notifications בכלי הפיתוח ל-Chrome כדי לנפות באגים בהתראות. כדי להתחיל בניפוי באגים, מקישים על התחלת הקלטה של אירועים התחלת הקלטה של אירועים או על Control+E (Command+E ב-Mac). כלי הפיתוח של Chrome מתעדים את כל אירועי ההתראות, כולל התראות מתוזמנות, התראות שמוצגות והתראות שנסגרו, למשך שלושה ימים, גם כשכלי הפיתוח סגורים.

אירוע של התראה מתוזמנת נרשם בחלונית Notifications (התראות) ב-Chrome DevTools, שנמצאת בחלונית Application (אפליקציה).
התראה מתוזמנת.
אירוע של התראה שמוצגת נרשם בחלונית Notifications (התראות) ב-Chrome DevTools.
התראה שמוצגת.

הדגמה (דמו)

אפשר לראות הדגמה של הפעלת טריגרים של התראות, שבה אפשר לתזמן התראות, לראות רשימה של התראות מתוזמנות ולבטל אותן.

צילום מסך של אפליקציית האינטרנט להדגמה של טריגרים לשליחת התראות.
הדגמה של טריגרים להתראות

אבטחה והרשאות

צוות Chrome תכנן והטמיע את Notification Triggers API (ממשק API להפעלת התראות) בהתאם לעקרונות הליבה שמוגדרים במאמר שליטה בגישה לתכונות עוצמתיות של פלטפורמת האינטרנט, כולל שליטה של המשתמש, שקיפות וארגונומיה. מכיוון שה-API הזה דורש Service Workers, הוא דורש גם הקשר מאובטח. כדי להשתמש ב-API, נדרשת אותה הרשאה כמו לשליחת התראות פוש רגילות.

שליטת משתמשים

ה-API הזה זמין רק בהקשר של ServiceWorkerRegistration. המשמעות היא שכל הנתונים הנדרשים מאוחסנים באותו הקשר ונמחקים באופן אוטומטי כשמוחקים את ה-service worker או כשמשתמש מוחק את כל נתוני האתר של המקור. חסימת קובצי Cookie גם מונעת התקנה של service workers ב-Chrome, ולכן גם את השימוש ב-API הזה. המשתמשים יכולים להשבית את ההתראות באתר בכל שלב בהגדרות האתר.

שקיפות

בניגוד ל-Push API, ‏ API זה לא תלוי ברשת, מה שאומר שצריך לספק מראש את כל הנתונים הנדרשים להצגת התראות מתוזמנות, כולל משאבי תמונות שמופיעים במאפיינים badge, icon ו-image. כלומר, המפתח לא יכול לראות את ההתראה המתוזמנת, וה-service worker לא מופעל עד שהמשתמש מקיים אינטראקציה עם ההתראה. לכן, נכון לעכשיו, אין דרך ידועה שבה המפתח יכול להשיג מידע על המשתמש באמצעות גישות שעלולות לפגוע בפרטיות, כמו חיפוש מיקום גאוגרפי לפי כתובת IP. העיצוב הזה גם מאפשר לתכונה להשתמש במנגנוני תזמון שמסופקים על ידי מערכת ההפעלה, כמו AlarmManager של Android, כדי לחסוך בסוללה.

משוב

צוות Chrome רוצה לשמוע על החוויה שלכם עם Notification Triggers.

נשמח לקבל מידע על עיצוב ה-API

האם יש משהו ב-API שלא פועל כמו שציפית? או שיש שיטות או מאפיינים חסרים שצריך להטמיע כדי לממש את הרעיון? יש לך שאלה או הערה לגבי מודל האבטחה? אפשר לפתוח בעיה במפרט במאגר GitHub של Notification Triggers, או להוסיף את המחשבות שלכם לבעיה קיימת.

בעיה בהטמעה?

מצאתם באג בהטמעה של Chrome? או שההטמעה שונה מהמפרט? אפשר לדווח על באג בכתובת new.crbug.com. חשוב לכלול כמה שיותר פרטים, הוראות פשוטות לשחזור הבאג ולהגדיר את הרכיבים לערך UI>Notifications.

מתכננים להשתמש ב-API?

מתכננים להשתמש בטריגרים להצגת התראות באתר? התמיכה הציבורית שלכם עוזרת לנו לקבוע סדרי עדיפויות לגבי תכונות, ומראה לספקי דפדפנים אחרים כמה חשוב לתמוך בהן. אפשר לשלוח ציוץ אל ‎@ChromiumDev עם ההאשטאג #NotificationTriggers ולספר לנו איפה ואיך אתם משתמשים בו.

קישורים מועילים

תודות

התכונה 'טריגרים של התראות' הוטמעה על ידי Richard Knoll וההסבר נכתב על ידי Peter Beverloo, עם תרומות של Richard. האנשים הבאים בדקו את המאמר: Joe Medley, ‏ Pete LePage, וגם Richard ו-Peter. תמונה ראשית (Hero) מאת Lukas Blazek ב-Unsplash.