Web Periodic Background Synchronization API
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Web Periodische Hintergrundsynchronisierung API bietet eine Möglichkeit, Aufgaben zu registrieren, die in einem Service Worker in regelmäßigen Abständen mit Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisierungsanforderungen bezeichnet.
Konzepte und Verwendung
Die Periodische Hintergrundsynchronisierungs-API ermöglicht es Webanwendungen, ihren Service Worker darauf aufmerksam zu machen, in einem periodischen Zeitintervall Aktualisierungen vorzunehmen. Anwendungen könnten das Abrufen der neuesten Inhalte während einer Verbindung des Geräts mit Wi-Fi oder Hintergrundaktualisierungen einer Anwendung beinhalten.
Das minimale Zeitintervall wird festgelegt, wenn die API aufgerufen wird; der Benutzeragent könnte jedoch auch andere Faktoren berücksichtigen, die beeinflussen, wann der Service Worker das Ereignis empfängt. Zum Beispiel vorheriges Website-Engagement oder Verbindung mit einem bekannten Netzwerk.
Die PeriodicSyncManager-Schnittstelle ist über ServiceWorkerRegistration.periodicSync verfügbar. Ein eindeutiger Tag-Identifier wird gesetzt, um das Sync-Ereignis zu 'benennen', das dann im ServiceWorker-Skript überwacht werden kann. Sobald das Ereignis empfangen wird, kann jede verfügbare Funktionalität ausgeführt werden, wie das Aktualisieren von Caches oder das Abrufen neuer Ressourcen.
Da diese API auf Service Workers angewiesen ist, ist die von dieser API bereitgestellte Funktionalität nur in einem sicheren Kontext verfügbar.
Schnittstellen
PeriodicSyncManager-
Registriert Aufgaben, die in einem Service Worker in regelmäßigen Abständen mit Netzwerkverbindung ausgeführt werden. Diese Aufgaben werden als periodische Hintergrundsynchronisierungsanforderungen bezeichnet.
PeriodicSyncEvent-
Repräsentiert ein Synchronisierungsereignis, das an den globalen Bereich eines ServiceWorkers gesendet wird. Es bietet eine Möglichkeit, Aufgaben im Service Worker mit Netzwerkverbindung auszuführen.
Erweiterungen zu anderen Schnittstellen
Die folgenden Ergänzungen zur Service Worker API sind in der Spezifikation für die periodische Hintergrundsynchronisierung angegeben, um einen Einstiegspunkt für die Verwendung der Periodischen Hintergrundsynchronisierung bereitzustellen.
ServiceWorkerRegistration.periodicSyncSchreibgeschützt-
Gibt eine Referenz auf die
PeriodicSyncManager-Schnittstelle zurück, um Aufgaben zu registrieren, die in bestimmten Intervallen ausgeführt werden sollen. periodicsync-Ereignis-
Tritt in regelmäßigen Abständen auf, die bei der Registrierung eines
PeriodicSyncManagerangegeben wurden.
Sicherheitsüberlegungen
Der Zugriff auf die periodische Hintergrundsynchronisierung wird durch die Berechtigung periodic-background-sync gesteuert. Sie können die Permissions API verwenden, um zu überprüfen, ob diese Berechtigung erteilt wurde:
const status = await navigator.permissions.query({
name: "periodic-background-sync",
});
In Chrome wird die Berechtigung nur einer installierten Web-App erteilt, die als separate Anwendung gestartet wurde. Chrome verwendet auch den Engagement-Score der Website, um zu bestimmen, ob und wie oft periodische Sync-Ereignisse ausgelöst werden.
Beispiele
Die folgenden Beispiele zeigen, wie die Schnittstelle verwendet wird.
Anfordern einer Periodischen Hintergrundsynchronisierung
Die folgende asynchrone Funktion registriert eine periodische Hintergrundsynchronisierung mit einem Mindestintervall von einem Tag aus einem Browserkontext:
async function registerPeriodicNewsCheck() {
const registration = await navigator.serviceWorker.ready;
try {
await registration.periodicSync.register("get-latest-news", {
minInterval: 24 * 60 * 60 * 1000,
});
} catch {
console.log("Periodic Sync could not be registered!");
}
}
Überprüfen einer Hintergrund-Periodensync nach Tag
Dieser Code überprüft, ob eine Periodische Hintergrundsynchronisierungsaufgabe mit einem bestimmten Tag registriert ist.
navigator.serviceWorker.ready.then((registration) => {
registration.periodicSync.getTags().then((tags) => {
if (tags.includes("get-latest-news")) skipDownloadingLatestNewsOnPageLoad();
});
});
Entfernen einer Periodischen Hintergrundsynchronisierungsaufgabe
Der folgende Code entfernt eine Periodische Hintergrundsynchronisierungsaufgabe, um das Synchronisieren von Artikeln im Hintergrund zu stoppen:
navigator.serviceWorker.ready.then((registration) => {
registration.periodicSync.unregister("get-latest-news");
});
Zuhören auf eine Periodische Hintergrundsynchronisierung innerhalb eines Service Workers
Das folgende Beispiel zeigt, wie auf ein periodisches Synchronisierungsereignis im Service Worker reagiert wird.
self.addEventListener("periodicsync", (event) => {
if (event.tag === "get-latest-news") {
event.waitUntil(fetchAndCacheLatestNews());
}
});
Spezifikationen
| Spezifikation |
|---|
| Web Periodic Background Synchronization> |