browser.alarms

Beschrijving

Gebruik de chrome.alarms API om code te plannen die periodiek of op een bepaald moment in de toekomst moet worden uitgevoerd.

Rechten

alarms

Als je de browser.alarms API wilt gebruiken, definieer je het recht "alarms" in het manifest:

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

Concepten en gebruik

Voor betrouwbaar gedrag is het handig om te begrijpen hoe de API zich gedraagt.

Slaapmodus op apparaat

Wekkers blijven actief terwijl een apparaat in de slaapstand staat. Een wekker maakt een apparaat niet wakker. Als het apparaat wordt geactiveerd, gaan gemiste wekkers af. Herhaalde wekkers gaan maximaal één keer af en worden daarna opnieuw gepland met de aangegeven periode vanaf het moment dat het apparaat wordt geactiveerd. Er wordt geen rekening gehouden met de tijd die al is verstreken sinds de wekker oorspronkelijk is ingesteld.

Persistentie

Je kunt de persistentie van een alarm bepalen op het moment dat je het maakt met de vlag persistAcrossSessions. Je kunt dit instellen op true (blijft bestaan totdat de extensie wordt geüpdatet) of false (wordt gewist als de extensie opnieuw wordt geladen of de browser opnieuw wordt opgestart en wanneer de extensie wordt geüpdatet).

Andere browsers en eerdere versies van Chrome

Deze property wordt niet ondersteund in andere browsers (probleem) of in versies van Chrome vóór Chrome 150, waar het gedrag onvoorspelbaar kan zijn. Daarom kun je het beste zorgen dat belangrijke alarmen bestaan elke keer dat je servicemedewerker wordt opgestart. Voorbeeld:

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

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

checkAlarmState();

Als je wekker dynamisch wordt gemaakt op basis van een gebruikersactie, kun je ergens anders opslaan dat er een wekker is gemaakt, zodat je weet dat je deze zo nodig opnieuw moet maken.

Voorbeelden

In de volgende voorbeelden zie je hoe je een wekker gebruikt en erop reageert. Als je deze API wilt proberen, installeer je het voorbeeld van de Alarm API uit de repository chrome-extension-samples.

Een wekker zetten

In het volgende voorbeeld wordt een alarm ingesteld in de servicemedewerker wanneer een nieuwe versie van de extensie wordt geïnstalleerd:

service-worker.js:

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

Reageren op een alarm

In het volgende voorbeeld wordt het icoon van de actiewerkbalk ingesteld op basis van de naam van de wekker die is afgegaan.

service-worker.js:

browser.alarms.onAlarm.addListener((alarm) => {
  browser.action.setIcon({
    path: getIconPath(alarm.name),
  });
});

Typen

Alarm

Eigenschappen

  • name

    tekenreeks

    De naam van deze wekker.

  • periodInMinutes

    number optioneel

    Als de waarde niet null is, is de wekker een herhalende wekker en gaat deze over periodInMinutes minuten weer af.

  • persistAcrossSessions

    booleaans

    Chrome 150+

    Of de wekker moet blijven bestaan tussen sessies (opnieuw opstarten van de browser).

  • scheduledTime

    getal

    De tijd waarop deze wekker is gepland, in milliseconden na het tijdperk (bijv. Date.now() + n). Om prestatieredenen kan de wekker een willekeurige tijd daarna zijn vertraagd.

AlarmCreateInfo

Eigenschappen

  • delayInMinutes

    number optioneel

    De tijdsduur in minuten waarna de gebeurtenis onAlarm moet worden geactiveerd.

  • name

    tekenreeks optioneel

    Chrome 152+

    De naam van deze wekker.

  • periodInMinutes

    number optioneel

    Als deze optie is ingesteld, wordt de onAlarm-gebeurtenis elke periodInMinutes minuten geactiveerd na de eerste gebeurtenis die is aangegeven door when of delayInMinutes. Als je dit niet instelt, gaat de wekker maar één keer af.

  • persistAcrossSessions

    booleaans optioneel

    Chrome 150+

    Of de wekker moet blijven bestaan tussen sessies (opnieuw opstarten van de browser). In Chrome is dit standaard ingesteld op Waar om overeen te komen met historisch gedrag, maar je moet dit expliciet instellen om de compatibiliteit tussen browsers te maximaliseren.

  • wanneer

    number optioneel

    De tijd waarop de wekker moet afgaan, in milliseconden na de epoch (bijv. Date.now() + n).

Methoden

clear()

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

De wekker met de opgegeven naam wissen.

Parameters

  • name

    tekenreeks optioneel

    De naam van de wekker die je wilt wissen. Standaard wordt de lege tekenreeks ingesteld.

Retourzendingen

  • Promise<boolean>

    Chrome 91+

clearAll()

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

Wist alle wekkers.

Retourzendingen

  • Promise<boolean | undefined>

    Chrome 91+

create()

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

Maakt een wekker. Rond de tijd(en) die zijn aangegeven door alarmInfo, wordt de gebeurtenis onAlarm geactiveerd. Als er een andere wekker met dezelfde naam is (of geen naam als er geen is opgegeven), wordt deze geannuleerd en vervangen door deze wekker.

Chrome beperkt alarmen tot maximaal één keer per seconde om de belasting van de machine van de gebruiker te verminderen, maar kan ze nog langer vertragen. Als u delayInMinutes of periodInMinutes instelt op minder dan 1 seconde, wordt dit niet geaccepteerd en krijgt u een waarschuwing. when kan zonder waarschuwing worden ingesteld op minder dan 1 seconde na 'nu', maar de wekker gaat pas na minstens 1 seconde af.

Parameters

  • name

    tekenreeks optioneel

    Optionele naam om deze wekker te herkennen. Standaard wordt de lege tekenreeks ingesteld.

  • alarmInfo

    Beschrijft wanneer de wekker moet afgaan. De begintijd moet worden opgegeven met when of delayInMinutes (maar niet beide). Als periodInMinutes is ingesteld, wordt het alarm elke periodInMinutes minuten herhaald na de eerste gebeurtenis. Als when of delayInMinutes niet is ingesteld voor een herhalende wekker, wordt periodInMinutes gebruikt als standaard voor delayInMinutes.

Retourzendingen

  • Promise<void>

    Chrome 111+

    Promise die wordt opgelost als de wekker is gemaakt.

get()

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

Haalt informatie op over de aangegeven wekker.

Parameters

  • name

    tekenreeks optioneel

    De naam van de wekker die je wilt ophalen. Standaard wordt de lege tekenreeks ingesteld.

Retourzendingen

  • Promise<Alarm | undefined>

    Chrome 91+

getAll()

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

Krijgt een matrix van alle wekkers.

Retourzendingen

  • Promise<Alarm[]>

    Chrome 91+

Evenementen

onAlarm

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

Geactiveerd als een wekker is afgelopen. Handig voor evenementpagina's.

Parameters

  • callback

    functie

    De parameter callback ziet er zo uit:

    (alarm: Alarm) => void