Beschreibung
Mit der chrome.alarms
API können Sie Code so planen, dass er regelmäßig oder zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt wird.
Berechtigungen
alarms
Deklarieren Sie zur Verwendung der chrome.alarms
API die Berechtigung "alarms"
im Manifest:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Konzepte und Verwendung
Um ein zuverlässiges Verhalten zu gewährleisten, ist es hilfreich, das Verhalten der API zu verstehen.
Ruhemodus des Geräts
Der Wecker wird auch im Ruhezustand des Geräts aktiviert. Ein Wecker wird jedoch nicht um das Gerät aufzuwecken. Wenn das Gerät aktiviert wird, werden alle verpassten Wecker ausgelöst. Wiederholte Alarme werden höchstens einmal ausgelöst und dann neu geplant mithilfe der festgelegter Zeitraum ab dem Ruhemodus des Geräts, ohne Berücksichtigung Zeitpunkt, der bereits verstrichen ist, seit der Alarm ursprünglich aktiviert wurde.
Persistenz
Alarme bleiben in der Regel bestehen, bis eine Erweiterung aktualisiert wird. Dies ist jedoch nicht garantiert. wird möglicherweise gelöscht, wenn der Browser neu gestartet wird. Sie sollten daher einen Speicherwert festlegen wenn ein Alarm erstellt wird, und achten Sie darauf, dass er bei jedem Start des Service Workers vorhanden ist. Beispiel:
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();
Beispiele
Die folgenden Beispiele zeigen, wie du einen Alarm verwendest und darauf reagierst. Um diese API auszuprobieren, Installieren Sie das Alarm API-Beispiel unter chrome-extension-samples zu erstellen.
Wecker stellen
Mit dem folgenden Beispiel wird bei der Installation der Erweiterung ein Alarm im Service Worker ausgelöst:
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
});
});
Auf Alarm reagieren
Im folgenden Beispiel wird das Symbol in der Aktionssymbolleiste auf den Namen des ausgelösten Alarms ausgerichtet.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
Typen
Alarm
Attribute
-
Name
String
Name dieses Alarms.
-
periodInMinutes
Zahl optional
Wenn nicht null, ist der Wecker ein sich wiederholender Wecker und wird in
periodInMinutes
Minuten wieder ausgelöst. -
scheduledTime
Zahl
Zeitpunkt, zu dem dieser Alarm ausgelöst werden sollte, in Millisekunden nach der Epoche (z.B.
Date.now() + n
). Aus Leistungsgründen kann der Alarm noch um etwas länger verzögert worden sein.
AlarmCreateInfo
Attribute
-
delayInMinutes
Zahl optional
Zeitraum in Minuten, nach dem das Ereignis
onAlarm
ausgelöst werden sollte. -
periodInMinutes
Zahl optional
Wenn festgelegt, sollte das onAlarm-Ereignis alle
periodInMinutes
Minuten nach dem ersten durchwhen
oderdelayInMinutes
angegebenen Ereignis ausgelöst werden. Wird sie nicht konfiguriert, wird der Alarm nur einmal ausgelöst. -
wann
Zahl optional
Zeitpunkt, zu dem der Alarm ausgelöst werden soll, in Millisekunden nach der Epoche (z.B.
Date.now() + n
).
Methoden
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
)
Löscht den Alarm mit dem angegebenen Namen.
Parameter
-
Name
String optional
Der Name des zu löschenden Alarms. Die Standardeinstellung ist ein leerer String.
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(wasCleared: boolean) => void
-
wasCleared
boolean
-
Gibt Folgendes zurück:
-
Promise<boolean>
Chrome 91 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
clearAll()
chrome.alarms.clearAll(
callback?: function,
)
Löscht alle Wecker.
Parameter
-
callback
Funktion optional
Der Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>(wasCleared: boolean) => void
-
wasCleared
boolean
-
Gibt Folgendes zurück:
-
Promise<boolean>
Chrome 91 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
)
Wecker stellen Kurz nach der in alarmInfo
angegebenen Zeit wird das Ereignis onAlarm
ausgelöst. Gibt es einen anderen Alarm mit dem gleichen Namen (oder keinen Namen, wenn keiner angegeben ist), wird er abgebrochen und durch diesen Wecker ersetzt.
Um die Geräte des Nutzers zu entlasten, beschränkt Chrome Alarme auf höchstens einmal alle 30 Sekunden, kann aber auch um einiges länger verzögern. Wenn Sie also delayInMinutes
oder periodInMinutes
auf weniger als 0.5
festlegen, wird dies nicht berücksichtigt und es wird eine Warnung ausgelöst. when
kann auf weniger als 30 Sekunden nach „jetzt“ festgelegt werden ohne Vorwarnung. Der Alarm löst jedoch erst nach 30 Sekunden einen Alarm aus.
Um Sie bei der Fehlerbehebung Ihrer App oder Erweiterung zu unterstützen, gibt es keine Begrenzung dafür, wie oft der Alarm ausgelöst werden kann, nachdem Sie sie entpackt geladen haben.
Parameter
-
Name
String optional
Optionaler Name zur Identifizierung dieses Alarms. Die Standardeinstellung ist ein leerer String.
-
alarmInfo
Beschreibt, wann der Alarm ausgelöst werden soll. Die Anfangszeit muss entweder durch
when
oder durchdelayInMinutes
angegeben werden, aber nicht durch beide. WennperiodInMinutes
eingestellt ist, wird der Wecker alleperiodInMinutes
Minuten nach dem ersten Ereignis wiederholt. Wenn wederwhen
nochdelayInMinutes
für einen sich wiederholenden Wecker eingestellt ist, wirdperiodInMinutes
als Standardeinstellung fürdelayInMinutes
verwendet. -
callback
Funktion optional
Chrome 111 und höherDer Parameter
callback
sieht so aus: <ph type="x-smartling-placeholder"></ph>() => void
Gibt Folgendes zurück:
-
Versprechen<void>
Chrome 111 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
get()
chrome.alarms.get(
name?: string,
callback?: function,
)
Ruft Details zum angegebenen Alarm ab.
Parameter
Gibt Folgendes zurück:
-
Promise<Alarm | nicht definiert>
Chrome 91 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.
getAll()
chrome.alarms.getAll(
callback?: function,
)
Ruft ein Array aller Alarme ab.
Parameter
Gibt Folgendes zurück:
-
Versprechen<Alarm[]>
Chrome 91 und höherPromise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks sind jedoch für Abwärtskompatibilität. Sie können nicht beide in demselben Funktionsaufruf verwenden. Die Promise wird mit demselben Typ aufgelöst, der an das Callback übergeben wird.