Push API

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Push-API ermöglicht es Webanwendungen, Nachrichten von einem Server zu empfangen, unabhängig davon, ob die Webanwendung im Vordergrund ist oder sogar derzeit im Benutzeragenten geladen ist. Dies ermöglicht es Entwicklern, asynchrone Benachrichtigungen und Aktualisierungen an Benutzer zu liefern, die sich dafür anmelden, was zu einer besseren Interaktion mit aktuellen Inhalten führt.

Push-Konzepte und Nutzung

Warnung: Bei der Implementierung von PushManager-Abonnements ist es äußerst wichtig, dass Sie Ihre App gegen CSRF/XSRF-Probleme schützen. Weitere Informationen finden Sie in den folgenden Artikeln:

Damit eine App Push-Nachrichten empfangen kann, muss ein aktiver Service Worker vorhanden sein. Wenn der Service Worker aktiv ist, kann er Push-Benachrichtigungen abonnieren, indem PushManager.subscribe() verwendet wird.

Das resultierende PushSubscription enthält alle Informationen, die die Anwendung benötigt, um eine Push-Nachricht zu senden: ein Endpunkt und den Verschlüsselungsschlüssel, der zum Senden von Daten erforderlich ist.

Der Service Worker wird bei Bedarf gestartet, um eingehende Push-Nachrichten zu bearbeiten, die an den onpush-Ereignishandler übermittelt werden. Dadurch können Apps auf empfangene Push-Nachrichten reagieren, zum Beispiel durch Anzeigen einer Benachrichtigung (unter Verwendung von ServiceWorkerRegistration.showNotification()).

Jedes Abonnement ist einzigartig für einen Service Worker. Der Endpunkt des Abonnements ist eine einzigartige Capability-URL: Das Wissen über den Endpunkt ist alles, was nötig ist, um eine Nachricht an Ihre Anwendung zu senden. Die Endpunkt-URL muss daher geheim gehalten werden, sonst könnten andere Anwendungen Push-Nachrichten an Ihre Anwendung senden.

Das Aktivieren eines Service Workers zur Zustellung einer Push-Nachricht kann zu einem erhöhten Ressourcenverbrauch führen, insbesondere der Batterie. Verschiedene Browser haben unterschiedliche Mechanismen zur Handhabung, es gibt derzeit keinen Standardmechanismus. Firefox erlaubt eine begrenzte Anzahl (Kontingent) an Push-Nachrichten, die an eine Anwendung gesendet werden dürfen, obwohl Push-Nachrichten, die Benachrichtigungen erzeugen, von diesem Limit ausgenommen sind. Das Limit wird jedes Mal zurückgesetzt, wenn die Seite besucht wird. In Chrome gibt es keine Limits.

Schnittstellen

PushEvent

Stellt eine Push-Aktion dar, die an den Global Scope eines ServiceWorker gesendet wird. Es enthält Informationen, die von einer Anwendung an eine PushSubscription gesendet werden.

PushManager

Bietet eine Möglichkeit, Benachrichtigungen von Drittservern zu empfangen sowie URLs für Push-Benachrichtigungen anzufordern.

PushMessageData

Bietet Zugriff auf vom Server gesendete Push-Daten und enthält Methoden zur Bearbeitung der empfangenen Daten.

PushSubscription

Bietet die URL-Endpunkt eines Abonnements und ermöglicht das Abbestellen eines Push-Dienstes.

PushSubscriptionOptions

Stellt die mit dem Push-Abonnement verbundenen Optionen dar.

Service Worker-Erweiterungen

Die folgenden Erweiterungen der Service Worker API wurden in der Push-API-Spezifikation festgelegt, um einen Einstiegspunkt für die Nutzung von Push-Nachrichten bereitzustellen. Sie überwachen auch und reagieren auf Push- und Abonnementänderungs-Ereignisse.

ServiceWorkerRegistration.pushManager Schreibgeschützt

Gibt einen Verweis auf die PushManager-Schnittstelle zurück, um Push-Abonnements zu verwalten, einschließlich Abonnieren, Abrufen eines aktiven Abonnements und Zugriff auf den Push-Berechtigungsstatus. Dies ist der Einstiegspunkt in die Nutzung von Push-Nachrichten.

onpush

Ein Ereignishandler, der immer ausgelöst wird, wenn ein push-Ereignis auftritt; das heißt, wann immer eine Server-Push-Nachricht empfangen wird.

onpushsubscriptionchange

Ein Ereignishandler, der immer dann ausgelöst wird, wenn ein pushsubscriptionchange-Ereignis auftritt; zum Beispiel, wenn ein Push-Abonnement ungültig geworden ist oder kurz davor steht, ungültig zu werden (z. B. wenn ein Push-Dienst ein Ablaufdatum festlegt).

Beispiele

Das ServiceWorker Cookbook von Mozilla enthält viele nützliche Push-Beispiele.

Spezifikationen

Specification
Push API
# pushevent-interface
Push API
# pushmessagedata-interface

Browser-Kompatibilität

api.PushEvent

api.PushMessageData

Siehe auch