Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.periodicSync Schreibgeschü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 PeriodicSyncManager angegeben 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:

js
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:

js
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.

js
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:

js
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.

js
self.addEventListener("periodicsync", (event) => {
  if (event.tag === "get-latest-news") {
    event.waitUntil(fetchAndCacheLatestNews());
  }
});

Spezifikationen

Spezifikation
Web Periodic Background Synchronization

Browser-Kompatibilität

api.PeriodicSyncManager

api.ServiceWorkerGlobalScope.periodicsync_event

Siehe auch