chrome.alarms

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

alarms

Wenn Sie die chrome.alarms API verwenden möchten, deklarieren Sie die Berechtigung "alarms" im Manifest:

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

Konzepte und Nutzung

Um ein zuverlässiges Verhalten zu gewährleisten, ist es hilfreich, die Funktionsweise der API zu verstehen.

Ruhemodus

Wecker werden auch dann ausgelöst, wenn sich ein Gerät im Ruhemodus befindet. Ein Wecker kann ein Gerät jedoch nicht aktivieren. Wenn das Gerät aktiviert wird, werden alle verpassten Wecker ausgelöst. Wiederholende Alarme werden höchstens einmal ausgelöst und dann mit dem angegebenen Zeitraum neu geplant. Dabei wird die Zeit ab dem Aufwachen des Geräts berücksichtigt, nicht die Zeit, die seit dem ursprünglichen Auslösen des Alarms vergangen ist.

Persistenz

Sie können die Persistenz eines Alarms bei der Erstellung mit dem Flag persistAcrossSessions steuern. Dies kann auf true (bleibt bis zur Aktualisierung der Erweiterung erhalten) oder false (wird gelöscht, wenn die Erweiterung neu geladen oder der Browser neu gestartet wird und immer, wenn die Erweiterung aktualisiert wird) festgelegt werden.

Andere Browser und frühere Versionen von Chrome

Diese Eigenschaft wird in anderen Browsern (Problem) oder in Chrome-Versionen vor Chrome 150 nicht unterstützt. Das Verhalten kann dort unvorhersehbar sein. Daher ist es am besten, dafür zu sorgen, dass wichtige Alarme jedes Mal vorhanden sind, wenn Ihr Service Worker gestartet wird. Beispiel:

async function checkAlarmState() {
  const alarm = await chrome.alarms.get("my-alarm");

  if (!alarm) {
    await chrome.alarms.create("my-alarm", { periodInMinutes: 1 });
  }
}

checkAlarmState();

Wenn Ihr Wecker dynamisch auf Grundlage einer Nutzeraktion erstellt wird, sollten Sie speichern, dass ein Wecker erstellt wurde, damit Sie ihn bei Bedarf neu erstellen können.

Beispiele

Die folgenden Beispiele zeigen, wie Sie einen Alarm verwenden und darauf reagieren. Wenn Sie diese API ausprobieren möchten, installieren Sie das Alarm API-Beispiel aus dem Repository chrome-extension-samples.

Wecker stellen

Im folgenden Beispiel wird im Service Worker ein Alarm festgelegt, wenn eine neue Version der Erweiterung installiert wird:

service-worker.js:

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

Auf einen Alarm reagieren

Im folgenden Beispiel wird das Symbol für die 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

Properties

  • name

    String

    Name dieses Alarms.

  • periodInMinutes

    number optional

    Wenn nicht null, ist der Alarm ein sich wiederholender Alarm und wird in periodInMinutes Minuten wieder ausgelöst.

  • persistAcrossSessions

    boolean

    Chrome 150+

    Gibt an, ob der Alarm über Sitzungen hinweg (Browserneustarts) bestehen bleiben soll.

  • scheduledTime

    Zahl

    Zeit, zu der dieser Alarm ausgelöst werden sollte, in Millisekunden seit dem Epoch-Zeitstempel (z.B. Date.now() + n). Aus Leistungsgründen kann der Alarm um eine beliebige Zeit darüber hinaus verzögert worden sein.

AlarmCreateInfo

Properties

  • delayInMinutes

    number optional

    Zeit in Minuten, nach der das onAlarm-Ereignis ausgelöst werden soll.

  • periodInMinutes

    number optional

    Wenn festgelegt, sollte das onAlarm-Ereignis alle periodInMinutes Minuten nach dem ursprünglichen Ereignis ausgelöst werden, das durch when oder delayInMinutes angegeben wird. Wenn diese Option nicht festgelegt ist, wird der Alarm nur einmal ausgelöst.

  • persistAcrossSessions

    Boolesch optional

    Chrome 150+

    Gibt an, ob der Alarm über Sitzungen hinweg (Browserneustarts) bestehen bleiben soll. In Chrome ist der Standardwert „true“, um dem bisherigen Verhalten zu entsprechen. Sie sollten ihn jedoch explizit festlegen, um die browserübergreifende Kompatibilität zu maximieren.

  • wann

    number optional

    Die Zeit, zu der der Alarm ausgelöst werden soll, in Millisekunden seit der Epoche (z.B. Date.now() + n).

Methoden

clear()

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

Löscht den Wecker mit dem angegebenen Namen.

Parameter

  • name

    String optional

    Der Name des zu löschenden Alarms. Die Standardeinstellung ist der leere String.

Ausgabe

  • Promise<boolean>

    Chrome 91 und höher

clearAll()

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

Löscht alle Wecker.

Ausgabe

  • Promise<boolean>

    Chrome 91 und höher

create()

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

Erstellt einen Alarm. In der Nähe der von alarmInfo angegebenen Zeit(en) wird das Ereignis onAlarm ausgelöst. Wenn ein anderer Wecker mit demselben Namen (oder ohne Namen, wenn keiner angegeben ist) vorhanden ist, wird er abgebrochen und durch diesen Wecker ersetzt.

Um die Belastung des Nutzergeräts zu verringern, werden Alarme in Chrome höchstens einmal alle 30 Sekunden ausgelöst. Sie können aber auch beliebig lange verzögert werden. Wenn Sie delayInMinutes oder periodInMinutes auf einen Wert unter 0.5 festlegen, wird dies nicht berücksichtigt und es wird eine Warnung angezeigt. when kann ohne Warnung auf weniger als 30 Sekunden nach „jetzt“ eingestellt werden. Der Alarm wird jedoch erst nach mindestens 30 Sekunden ausgelöst.

Wenn Sie Ihre App oder Erweiterung entpackt geladen haben, gibt es keine Begrenzung für die Häufigkeit, mit der der Alarm ausgelöst werden kann. Das kann Ihnen beim Debuggen helfen.

Parameter

  • name

    String optional

    Optionaler Name zur Identifizierung dieses Alarms. Die Standardeinstellung ist der leere String.

  • alarmInfo

    Beschreibt, wann der Alarm ausgelöst werden soll. Die Startzeit muss entweder mit when oder delayInMinutes angegeben werden (aber nicht mit beiden). Wenn periodInMinutes festgelegt ist, wird der Alarm alle periodInMinutes Minuten nach dem ursprünglichen Ereignis wiederholt. Wenn weder when noch delayInMinutes für einen sich wiederholenden Alarm festgelegt ist, wird periodInMinutes als Standard für delayInMinutes verwendet.

Ausgabe

  • Promise<void>

    Chrome 111 und höher

    Promise, das aufgelöst wird, wenn der Wecker erstellt wurde.

get()

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

Ruft Details zum angegebenen Alarm ab.

Parameter

  • name

    String optional

    Der Name des abzurufenden Weckers. Die Standardeinstellung ist der leere String.

Ausgabe

  • Promise<Alarm | undefined>

    Chrome 91 und höher

getAll()

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

Ruft ein Array aller Wecker ab.

Ausgabe

  • Promise<Alarm[]>

    Chrome 91 und höher

Ereignisse

onAlarm

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

Wird ausgelöst, wenn ein Alarm abgelaufen ist. Nützlich für Veranstaltungsseiten.

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (alarm: Alarm) => void