Beschreibung
Mit der chrome.alarms API können Sie festlegen, dass Code regelmäßig oder zu einem bestimmten Zeitpunkt in der Zukunft ausgeführt wird.
Berechtigungen
alarmsManifest
Wenn Sie die chrome.alarms API verwenden möchten, deklarieren Sie die "alarms" Berechtigung im Manifest:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Beispiele
Die folgenden Beispiele zeigen, wie Sie einen Alarm verwenden und darauf reagieren. Wenn Sie diese API testen möchten, installieren Sie das Beispiel für die Alarm API aus dem Repository chrome-extension-samples.
Wecker stellen
Im folgenden Beispiel wird ein Alarm im Service Worker festgelegt, wenn die Erweiterung installiert wird:
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 einen Alarm reagieren
Im folgenden Beispiel wird das Symbol der Aktionsleiste basierend auf dem Namen des ausgelösten Alarms festgelegt.
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 Alarm ein wiederholter Alarm und wird nach
periodInMinutesMinuten wieder ausgelöst. -
persistAcrossSessions
boolean
Chrome 150+Gibt an, ob der Alarm über Sitzungen hinweg bestehen bleiben soll (Browserneustarts).
-
scheduledTime
Zahl
Zeit, zu der dieser Alarm ausgelöst werden sollte, in Millisekunden nach der Epoche (z.B.
Date.now() + n). Aus Leistungsgründen wurde der Alarm möglicherweise um eine beliebige Zeit darüber hinaus verzögert.
AlarmCreateInfo
Attribute
-
delayInMinutes
Zahl optional
Zeit in Minuten, nach der das Ereignis
onAlarmausgelöst werden soll. -
name
String optional
AusstehendName dieses Alarms.
-
periodInMinutes
Zahl optional
Wenn festgelegt, sollte das Ereignis „onAlarm“ alle
periodInMinutesMinuten nach dem ersten Ereignis ausgelöst werden, das durchwhenoderdelayInMinutesangegeben wird. Wenn nicht festgelegt, wird der Alarm nur einmal ausgelöst. -
persistAcrossSessions
boolean optional
Chrome 150+Gibt an, ob der Alarm über Sitzungen hinweg bestehen bleiben soll (Browserneustarts). In Chrome ist diese Einstellung standardmäßig auf „true“ gesetzt, um dem bisherigen Verhalten zu entsprechen. Sie sollten sie jedoch explizit festlegen, um die Kompatibilität mit verschiedenen Browsern zu maximieren.
-
when
Zahl optional
Zeit, zu der 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,
): Promise<boolean>
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
callbacksieht so aus:(wasCleared: boolean) => void
-
wasCleared
boolean
-
Ausgabe
-
Promise<boolean>
Chrome 91+Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean>
Löscht alle Alarme.
Parameter
-
callback
Funktion optional
Der Parameter
callbacksieht so aus:(wasCleared: boolean) => void
-
wasCleared
boolean
-
Ausgabe
-
Promise<boolean>
Chrome 91+Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
Erstellt einen Alarm. Zu den von alarmInfo angegebenen Zeiten wird das Ereignis onAlarm ausgelöst. Wenn ein anderer Alarm mit demselben Namen vorhanden ist (oder ohne Namen, wenn keiner angegeben ist), wird er abgebrochen und durch diesen Alarm ersetzt.
Um die Last auf dem Computer des Nutzers zu verringern, beschränkt Chrome Alarme auf maximal einmal alle 30 Sekunden, kann sie aber auch um eine beliebige Zeit verzögern. Wenn Sie delayInMinutes oder periodInMinutes auf weniger als 0.5 setzen, wird dies nicht berücksichtigt und eine Warnung ausgelöst. when kann ohne Warnung auf weniger als 30 Sekunden nach „jetzt“ gesetzt werden, löst den Alarm aber erst nach mindestens 30 Sekunden aus.
Wenn Sie Ihre App oder Erweiterung entpackt geladen haben, gibt es keine Beschränkung, wie oft der Alarm ausgelöst werden kann. Das kann beim Debuggen hilfreich sein.
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 mit
whenoderdelayInMinutesangegeben werden (aber nicht mit beiden). WennperiodInMinutesfestgelegt ist, wird der Alarm alleperiodInMinutesMinuten nach dem ersten Ereignis wiederholt. Wenn für einen wiederholten Alarm wederwhennochdelayInMinutesfestgelegt ist, wirdperiodInMinutesals Standardwert fürdelayInMinutesverwendet. -
callback
Funktion optional
Chrome 111+Der Parameter
callbacksieht so aus:() => void
Ausgabe
-
Promise<void>
Chrome 111+Promise, das aufgelöst wird, wenn der Alarm erstellt wurde.
Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
Ruft Details zum angegebenen Alarm ab.
Parameter
Ausgabe
-
Promise<Alarm | undefined>
Chrome 91+Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
Ruft ein Array aller Alarme ab.
Parameter
Ausgabe
-
Promise<Alarm[]>
Chrome 91+Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.