chrome.alarms

תיאור

אפשר להשתמש ב-chrome.alarms API כדי לתזמן קוד להפעלה מעת לעת או בשעה ספציפית בעתיד.

הרשאות

alarms

כדי להשתמש ב-chrome.alarms API, צריך להצהיר על ההרשאה "alarms" במניפסט:

{   "name": "My extension",   ...   "permissions": [     "alarms"   ],   ... } 

מושגים ושימוש

כדי להבטיח התנהגות מהימנה, חשוב להבין את אופן הפעולה של ה-API.

מצב שינה במכשיר

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

התמדה

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

const STORAGE_KEY = "user-preference-alarm-enabled";  async function checkAlarmState() {   const { alarmEnabled } = await chrome.storage.get(STORAGE_KEY);    if (alarmEnabled) {     const alarm = await chrome.alarms.get("my-alarm");      if (!alarm) {       await chrome.alarms.create({ periodInMinutes: 1 });     }   } }  checkAlarmState(); 

דוגמאות

בדוגמאות הבאות מוצגות דרכים להשתמש באזעקה ולהגיב לה. כדי לנסות את ה-API הזה, צריך להתקין את הדוגמה ל-Alarm API ממאגר chrome-extension-samples.

הגדרת התראה

בדוגמה הבאה מוגדרת התראה ב-service worker כשהתוסף מותקן:

service-worker.js:

chrome.runtime.onInstalled.addListener(async ({ reason }) => {   if (reason !== 'install') {     return;   }    // Create an alarm so we have something to look at in the demo   await chrome.alarms.create('demo-default-alarm', {     delayInMinutes: 1,     periodInMinutes: 1   }); }); 

איך מגיבים לאזעקה

בדוגמה הבאה, הסמל של סרגל הכלים של הפעולה מוגדר על סמך השם של האזעקה שהופעלה.

service-worker.js:

chrome.alarms.onAlarm.addListener((alarm) => {   chrome.action.setIcon({     path: getIconPath(alarm.name),   }); }); 

סוגים

Alarm

מאפיינים

  • שם

    מחרוזת

    השם של השעון המעורר.

  • periodInMinutes

    מספר אופציונלי

    אם הערך לא null, השעון המעורר חוזר על עצמו ויפעל שוב בעוד periodInMinutes דקות.

  • scheduledTime

    number

    השעה שבה ההתראה הזו תוכננה לפעול, באלפיות השנייה שעברו מאז תקופת ה-epoch (לדוגמה, Date.now() + n). מטעמי ביצועים, יכול להיות שההתראה תופעל באיחור של פרק זמן כלשהו.

AlarmCreateInfo

מאפיינים

  • delayInMinutes

    מספר אופציונלי

    משך הזמן בדקות שאחריו יופעל האירוע onAlarm.

  • periodInMinutes

    מספר אופציונלי

    אם המאפיין מוגדר, האירוע onAlarm יופעל כל periodInMinutes דקות אחרי האירוע הראשוני שצוין על ידי when או delayInMinutes. אם לא מגדירים את האפשרות הזו, השעון המעורר יצלצל רק פעם אחת.

  • מתי

    מספר אופציונלי

    השעה שבה ההתראה אמורה לפעול, באלפיות השנייה אחרי תקופת הזמן של מערכת (למשל Date.now() + n).

Methods

clear()

chrome.alarms.clear(
  name?: string,
)
: Promise<boolean>

מנקה את השעון המעורר עם השם שצוין.

פרמטרים

  • שם

    מחרוזת אופציונלי

    השם של ההתראה שרוצים לבטל. ברירת המחדל היא מחרוזת ריקה.

החזרות

  • Promise<boolean>

    Chrome 91 ואילך

clearAll()

chrome.alarms.clearAll(): Promise<boolean>

מחיקת כל השעונים המעוררים.

החזרות

  • Promise<boolean>

    Chrome 91 ואילך

create()

chrome.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
)
: Promise<void>

יוצרת שעון מעורר. בסמוך לשעה או לשעות שצוינו ב-alarmInfo, האירוע onAlarm מופעל. אם יש עוד התראה עם אותו שם (או בלי שם אם לא צוין שם), היא תבוטל ותוחלף בהתראה הזו.

כדי להפחית את העומס על המחשב של המשתמש, Chrome מגביל את ההתראות לפעם אחת לכל היותר בכל 30 שניות, אבל יכול לעכב אותן למשך זמן אקראי נוסף. כלומר, אם תגדירו את delayInMinutes או periodInMinutes כערך נמוך מ-0.5, המערכת לא תכבד את ההגדרה ותציג אזהרה. אפשר להגדיר את when לפחות מ-30 שניות אחרי 'עכשיו' בלי אזהרה, אבל ההתראה לא תופעל בפועל למשך 30 שניות לפחות.

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

פרמטרים

  • שם

    מחרוזת אופציונלי

    שם אופציונלי לזיהוי האזעקה. ברירת המחדל היא מחרוזת ריקה.

  • alarmInfo

    מתאר מתי השעון המעורר צריך לפעול. צריך לציין את שעת ההתחלה באמצעות when או delayInMinutes (אבל לא את שניהם). אם הערך של periodInMinutes מוגדר, ההתראה תחזור על עצמה כל periodInMinutes דקות אחרי האירוע הראשוני. אם לא מוגדרים when או delayInMinutes לשעון מעורר חוזר, periodInMinutes משמש כברירת המחדל ל-delayInMinutes.

החזרות

  • Promise<void>

    Chrome 111 ואילך

get()

chrome.alarms.get(
  name?: string,
)
: Promise<Alarm | undefined>

אחזור פרטים על ההתראה שצוינה.

פרמטרים

  • שם

    מחרוזת אופציונלי

    השם של ההתראה שרוצים לאחזר. ברירת המחדל היא מחרוזת ריקה.

החזרות

  • Promise<Alarm | undefined>

    Chrome 91 ואילך

getAll()

chrome.alarms.getAll(): Promise<Alarm[]>

מחזירה מערך של כל השעונים המעוררים.

החזרות

  • Promise<Alarm[]>

    Chrome 91 ואילך

אירועים

onAlarm

chrome.alarms.onAlarm.addListener(
  callback: function,
)

מופעל כשמגיע הזמן של התראה. שימושי לדפי אירועים.

פרמטרים

  • callback

    פונקציה

    הפרמטר callback נראה כך:

    (alarm: Alarm) => void