Beschrijving
Gebruik de chrome.alarms API om code te plannen die periodiek of op een bepaald moment in de toekomst moet worden uitgevoerd.
Rechten
alarmsAls 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
periodInMinutesminuten 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
onAlarmmoet 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
periodInMinutesminuten geactiveerd na de eerste gebeurtenis die is aangegeven doorwhenofdelayInMinutes. 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
whenofdelayInMinutes(maar niet beide). AlsperiodInMinutesis ingesteld, wordt het alarm elkeperiodInMinutesminuten herhaald na de eerste gebeurtenis. AlswhenofdelayInMinutesniet is ingesteld voor een herhalende wekker, wordtperiodInMinutesgebruikt als standaard voordelayInMinutes.
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+
Retourzendingen
-
Promise<Alarm[]>
Chrome 91+