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 "alarms" Berechtigung im Manifest:

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

Konzepte und Verwendung

Um ein zuverlässiges Verhalten zu gewährleisten, ist es hilfreich zu verstehen, wie sich die API verhält.

Ruhemodus

Alarme werden weiterhin ausgelöst, während sich ein Gerät im Ruhemodus befindet. Ein Alarm kann ein Gerät jedoch nicht aus dem Ruhemodus aktivieren. Wenn das Gerät aktiviert wird, werden alle verpassten Alarme ausgelöst. Wiederholte Alarme werden höchstens einmal ausgelöst und dann mit dem angegebenen Zeitraum neu geplant. Dabei wird die Zeit ab dem Zeitpunkt berücksichtigt, an dem das Gerät aktiviert wird, und nicht die Zeit, die seit der ursprünglichen Festlegung des Alarms verstrichen ist.

Persistenz

Alarme bleiben in der Regel bestehen, bis eine Erweiterung aktualisiert wird. Dies ist jedoch nicht garantiert und Alarme können gelöscht werden, wenn der Browser neu gestartet wird. Achten Sie daher darauf, dass sie bei jedem Start Ihres Service Workers vorhanden sind. Beispiel:

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

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

checkAlarmState();

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 beim Installieren der Erweiterung ein Alarm im Service Worker festgelegt:

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 anhand des Namens 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

    Zahl optional

    Wenn nicht null, ist der Alarm ein wiederholter Alarm und wird nach periodInMinutes Minuten wieder ausgelöst.

  • persistAcrossSessions

    boolean

    Ausstehend

    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 seit der Epoche (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

    Zahl optional

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

  • periodInMinutes

    Zahl optional

    Wenn festgelegt, wird das Ereignis „onAlarm“ alle periodInMinutes Minuten nach dem ersten Ereignis ausgelöst, das durch when oder delayInMinutes angegeben wird. Wenn nicht festgelegt, wird der Alarm nur einmal ausgelöst.

  • persistAcrossSessions

    boolean optional

    Ausstehend

    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 seit der Epoche (z.B. Date.now() + n).

Methoden

clear()

chrome.alarms.clear(
  name?: string,
)
: 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.

Ausgabe

  • Promise<boolean>

    Chrome 91+

clearAll()

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

Löscht alle Alarme.

Ausgabe

  • Promise<boolean>

    Chrome 91+

create()

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

Erstellt einen Alarm. Zu den in 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 höchstens einmal alle 30 Sekunden, kann sie aber um eine beliebige Zeit verzögern. Wenn Sie delayInMinutes oder periodInMinutes auf weniger als 0.5 setzen, wird dies nicht berücksichtigt und es wird eine Warnung angezeigt. when kann ohne Warnung auf weniger als 30 Sekunden nach „jetzt“ gesetzt werden, führt aber nicht dazu, dass der Alarm vor mindestens 30 Sekunden ausgelöst wird.

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 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 when oder delayInMinutes angegeben werden (aber nicht mit beiden). Wenn periodInMinutes festgelegt ist, wird der Alarm alle periodInMinutes Minuten nach dem ersten Ereignis wiederholt. Wenn für einen wiederholten Alarm weder when noch delayInMinutes festgelegt ist, wird periodInMinutes als Standardwert für delayInMinutes verwendet.

Ausgabe

  • Promise<void>

    Chrome 111+

    Promise, das aufgelöst wird, wenn der Alarm 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 Alarms. Die Standardeinstellung ist ein leerer String.

Ausgabe

  • Promise<Alarm | undefined>

    Chrome 91+

getAll()

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

Ruft ein Array aller Alarme ab.

Ausgabe

  • Promise<Alarm[]>

    Chrome 91+

Ereignisse

onAlarm

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

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

Parameter

  • callback

    Funktion

    Der Parameter callback sieht so aus:

    (alarm: Alarm) => void