chrome.alarms

תיאור

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

הרשאות

alarms

כדי להשתמש ב-API chrome.alarms, צריך להצהיר על ההרשאה "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 הזה, צריך להתקין את הדוגמה ל-Alert API מהמאגר chrome-extension-samples.

Set an alarm

הדוגמה הבאה מגדירה התראה ב-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

תכונות

  • name

    מחרוזת

    שם ההתראה הזו.

  • periodInMinutes

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

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

  • scheduledTime

    number

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

AlarmCreateInfo

תכונות

  • delayInMinutes

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

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

  • periodInMinutes

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

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

  • מתי

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

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

שיטות

clear()

הבטחה
chrome.alarms.clear(
  name?: string,
  callback?: function,
)

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

פרמטרים

  • name

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

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

  • קריאה חוזרת (callback)

    פונקציה אופציונלי

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

    (wasCleared: boolean)=>void

    • wasCleared

      boolean

החזרות

  • Promise<boolean>

    Chrome 91 ומעלה

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

clearAll()

הבטחה
chrome.alarms.clearAll(
  callback?: function,
)

ניקוי כל ההתראות.

פרמטרים

  • קריאה חוזרת (callback)

    פונקציה אופציונלי

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

    (wasCleared: boolean)=>void

    • wasCleared

      boolean

החזרות

  • Promise<boolean>

    Chrome 91 ומעלה

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

create()

הבטחה
chrome.alarms.create(
  name?: string,
  alarmInfo: AlarmCreateInfo,
  callback?: function,
)

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

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

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

פרמטרים

  • name

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

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

  • alarmInfo

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

  • קריאה חוזרת (callback)

    פונקציה אופציונלי

    Chrome 111 ומעלה

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

    ()=>void

החזרות

  • Promise<void>

    Chrome 111 ומעלה

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

get()

הבטחה
chrome.alarms.get(
  name?: string,
  callback?: function,
)

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

פרמטרים

  • name

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

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

  • קריאה חוזרת (callback)

    פונקציה אופציונלי

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

    (alarm?: Alarm)=>void

החזרות

  • הבטחה<התראה|לא מוגדר>

    Chrome 91 ומעלה

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

getAll()

הבטחה
chrome.alarms.getAll(
  callback?: function,
)

מקבלים מערך של כל ההתראות.

פרמטרים

  • קריאה חוזרת (callback)

    פונקציה אופציונלי

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

    (alarms: Alarm[])=>void

החזרות

  • הבטחה<התראה[]>

    Chrome 91 ומעלה

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

אירועים

onAlarm

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

מופעל כשחלוף התראה. שימושי לדפי אירועים.

פרמטרים

  • קריאה חוזרת (callback)

    פונקציה

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

    (alarm: Alarm)=>void