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

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

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

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

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

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

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

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

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

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

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

שלב סטטוס
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());
};

ניפוי באגים

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

אירוע של התראה מתוזמנת נרשם בחלונית 'התראות' בכלי הפיתוח ל-Chrome, שנמצאת בחלונית האפליקציה.
התראה מתוזמנת.
אירוע התראה שמוצג נרשם בחלונית 'התראות' ב'כלי פיתוח ל-Chrome'.
מוצגת התראה.

הדגמה (דמו)

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

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

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

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

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

ה-API הזה זמין רק בהקשר של ServiceWorkerRegistration. רמיזה לכך שכל מאוחסנים באותו הקשר ונמחקים באופן אוטומטי כשה-Service Worker נמחק או שהמשתמש מוחק את כל נתוני האתר עבור המקור. חסימת קובצי cookie מונעת גם שימוש בשירות עובדים שיותקנו ב-Chrome, ולכן לא ייעשה שימוש ב-API הזה. ההתראות יכולות יושבת תמיד על ידי המשתמש עבור האתר בהגדרות האתר.

שקיפות

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

משוב

הצוות של Chrome רוצה לשמוע על חוויית השימוש שלך בטריגרים של התראות.

מתארים את עיצוב ה-API

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

נתקלתם בבעיה בהטמעה?

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

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

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

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

אישורים

טריגרים של התראות הוטמעו על ידי ריצ'רד קנול והסבר ההסבר נכתב על ידי פיטר בוורלו, עם מאת ריצ'רד. האנשים הבאים בדקו את המאמר: Joe Medley, Pete LePage, וגם ריצ'רד ופיטר. תמונה ראשית (Hero) מאת Lukas Blazek בתוכנית Un לשמור.