תיאור
אפשר להשתמש ב-chrome.alarms API כדי לתזמן קוד להפעלה מעת לעת או בשעה ספציפית בעתיד.
הרשאות
alarmsכדי להשתמש ב-chrome.alarms API, צריך להצהיר על ההרשאה "alarms" במניפסט:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
מושגים ושימוש
כדי להבטיח התנהגות מהימנה, חשוב להבין את אופן הפעולה של ה-API.
מצב שינה במכשיר
השעונים המעוררים ממשיכים לפעול בזמן שהמכשיר במצב שינה. עם זאת, שעון מעורר לא יפעיל את המכשיר. כשהמכשיר יתעורר, כל ההתראות שהוחמצו יופעלו. אזעקות חוזרות יופעלו פעם אחת לכל היותר, ואז יתוזמנו מחדש לפי התקופה שצוינה, החל מהרגע שבו המכשיר יופעל. לא יובא בחשבון הזמן שכבר חלף מאז שהאזעקה הוגדרה להפעלה.
התמדה
ההתראות בדרך כלל נשארות עד לעדכון של התוסף. עם זאת, אין בכך ערובה, והאזעקות עשויות להתבטל כשמפעילים מחדש את הדפדפן. לכן, חשוב לוודא שהוא קיים בכל פעם ש-service worker מופעל. לדוגמה:
async function checkAlarmState() {
const alarm = await chrome.alarms.get("my-alarm");
if (!alarm) {
await chrome.alarms.create("my-alarm", { 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
השעה שבה השעון המעורר אמור היה לפעול, באלפיות השנייה מאז תקופת האפוק (לדוגמה,
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 ואילך
פרמטרים
-
שם
מחרוזת אופציונלי
השם של ההתראה שרוצים לקבל. ברירת המחדל היא מחרוזת ריקה.
החזרות
-
Promise<Alarm | undefined>
Chrome 91 ואילך
החזרות
-
Promise<Alarm[]>
Chrome 91 ואילך