Beschrijving
Gebruik de chrome.alarms API om code in te plannen die periodiek of op een specifiek tijdstip in de toekomst moet worden uitgevoerd.
Toestemmingen
alarms Om de chrome.alarms API te gebruiken, moet je de "alarms" -toestemming in het manifest declareren:
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Concepten en gebruik
Om betrouwbaar gedrag te garanderen, is het nuttig om te begrijpen hoe de API werkt.
Apparaat slaapstand
Alarmen blijven afgaan terwijl een apparaat in slaapstand staat. Een alarm zal een apparaat echter niet wakker maken. Wanneer het apparaat wakker wordt, zullen alle gemiste alarmen alsnog afgaan. Herhalende alarmen gaan maximaal één keer af en worden vervolgens opnieuw ingepland met de opgegeven periode vanaf het moment dat het apparaat wakker wordt, zonder rekening te houden met de tijd die al is verstreken sinds het alarm oorspronkelijk was ingesteld.
Vasthoudendheid
Alarmen blijven over het algemeen actief totdat een extensie wordt bijgewerkt. Dit is echter niet gegarandeerd en alarmen kunnen worden gewist wanneer de browser opnieuw wordt opgestart. Zorg er daarom voor dat het alarm elke keer aanwezig is wanneer uw service worker opstart. Bijvoorbeeld:
async function checkAlarmState() {
const alarm = await chrome.alarms.get("my-alarm");
if (!alarm) {
await chrome.alarms.create("my-alarm", { periodInMinutes: 1 });
}
}
checkAlarmState();
Voorbeelden
De volgende voorbeelden laten zien hoe je een alarm kunt gebruiken en erop kunt reageren. Om deze API uit te proberen, installeer je het Alarm API-voorbeeld uit de chrome-extension-samples repository.
Stel een alarm in
Het volgende voorbeeld stelt een alarm in de service worker in wanneer de extensie wordt geïnstalleerd:
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
});
});
Reageer op een alarm
Het volgende voorbeeld stelt het pictogram van de actiewerkbalk in op basis van de naam van het alarm dat is afgegaan.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
Soorten
Alarm
Eigenschappen
- naam
snaar
Naam van dit alarm.
- periodeInMinuten
nummer optioneel
Als het alarm niet null is, is het een herhalend alarm en zal het na
periodInMinutesminuten opnieuw afgaan. - geplande tijd
nummer
Het tijdstip waarop dit alarm gepland stond af te gaan, in milliseconden na de epoch (bijv.
Date.now() + n). Om prestatieproblemen te voorkomen, kan het alarm willekeurig met een bepaalde tijd zijn vertraagd.
AlarmCreateInfo
Eigenschappen
- vertragingInMinuten
nummer optioneel
De tijdsduur in minuten waarna de
onAlarmgebeurtenis moet worden geactiveerd. - periodeInMinuten
nummer optioneel
Indien ingesteld, moet de onAlarm-gebeurtenis elke
periodInMinutesminuten na de initiële gebeurtenis, gespecificeerd doorwhenofdelayInMinutes, worden geactiveerd. Indien niet ingesteld, zal het alarm slechts één keer worden geactiveerd. - wanneer
nummer optioneel
Het tijdstip waarop het alarm moet afgaan, in milliseconden na de epoch (bijv.
Date.now() + n).
Methoden
clear()
chrome.alarms.clear(
name?: string,
): Promise<boolean>
Schakelt het alarm met de opgegeven naam uit.
Parameters
- naam
string optioneel
De naam van het alarm dat moet worden gewist. Standaard is dit een lege tekenreeks.
Retourneert
Belofte<boolean>
Chrome 91+
clearAll()
chrome.alarms.clearAll(): Promise<boolean>
Alle alarmen worden uitgeschakeld.
Retourneert
Belofte<boolean>
Chrome 91+
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
): Promise<void>
Hiermee wordt een alarm aangemaakt. Rond de tijd(en) die zijn opgegeven in alarmInfo , wordt de onAlarm gebeurtenis geactiveerd. Als er een ander alarm met dezelfde naam bestaat (of zonder naam als er geen is opgegeven), wordt dit geannuleerd en vervangen door dit alarm.
Om de belasting van de computer van de gebruiker te verminderen, beperkt Chrome alarmen tot maximaal één keer per 30 seconden, maar kan ze willekeurig langer uitstellen. Dat wil zeggen dat het instellen delayInMinutes of periodInMinutes op minder dan 0.5 geen effect heeft en een waarschuwing geeft. when kan worden ingesteld op minder dan 30 seconden na "nu" zonder waarschuwing, maar het alarm zal pas na minimaal 30 seconden daadwerkelijk afgaan.
Om je te helpen bij het debuggen van je app of extensie, is er geen limiet aan hoe vaak het alarm kan afgaan wanneer je deze uitgepakt hebt geladen.
Parameters
- naam
string optioneel
Optionele naam om dit alarm te identificeren. Standaard is dit een lege tekenreeks.
- alarmInfo
Beschrijft wanneer het alarm moet afgaan. De begintijd moet worden opgegeven met '
whenofdelayInMinutes(maar niet beide). AlsperiodInMinutesis ingesteld, zal het alarm zich elke 'periodInMinutesminuten na de eerste gebeurtenis herhalen. Als noch 'whennochdelayInMinutesis ingesteld voor een herhalend alarm, wordtperiodInMinutesgebruikt als standaardwaarde voordelayInMinutes.
Retourneert
Promise<void>
Chrome 111+Een belofte die wordt afgehandeld zodra het alarm is aangemaakt.
get()
chrome.alarms.get(
name?: string,
): Promise<Alarm | undefined>
Geeft details weer over het opgegeven alarm.
Parameters
- naam
string optioneel
De naam van het alarm dat moet worden opgehaald. Standaard is dit een lege tekenreeks.
Retourneert
Belofte< Alarm | niet gedefinieerd>
Chrome 91+
Retourneert
Belofte< Alarm []>
Chrome 91+