Push API

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die Push API gibt Webanwendungen die Möglichkeit, Nachrichten von einem Server zu empfangen, unabhängig davon, ob die Webanwendung im Vordergrund ist oder sogar momentan geladen ist, in einem Benutzeragenten. Dies ermöglicht Entwicklern das Senden von asynchronen Benachrichtigungen und Updates an Benutzer, die sich dafür entscheiden, was zu besserer Interaktion mit zeitnahen neuen Inhalten führt.

Push-Konzepte und Nutzung

Warnung: Bei der Implementierung von PushManager-Abonnements ist es von entscheidender Bedeutung, dass Sie sich in Ihrer App gegen CSRF/XSRF-Probleme schützen. Weitere Informationen finden Sie in den folgenden Artikeln:

Damit eine App Push-Nachrichten empfangen kann, muss sie über einen aktiven Service Worker verfügen. Wenn der Service Worker aktiv ist, kann er sich für Push-Benachrichtigungen anmelden, indem er PushManager.subscribe() verwendet.

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

Der Service Worker wird bei Bedarf gestartet, um eingehende Push-Nachrichten zu bearbeiten, die an den onpush-Ereignishandler geliefert werden. Dies ermöglicht es Apps, auf empfangene Push-Nachrichten zu reagieren, z. B. durch das Anzeigen einer Benachrichtigung (mithilfe von ServiceWorkerRegistration.showNotification().)

Jedes Abonnement ist einzigartig für einen Service Worker. Der Endpunkt für das Abonnement ist eine einzigartige Capability-URL: Das Wissen um den Endpunkt ist alles, was erforderlich ist, um eine Nachricht an Ihre Anwendung zu senden. Die Endpunkt-URL muss daher geheim gehalten werden, da ansonsten andere Anwendungen in der Lage sein könnten, Push-Nachrichten an Ihre Anwendung zu senden.

Das Aktivieren eines Service Workers zur Lieferung einer Push-Nachricht kann zu einem erhöhten Ressourcenverbrauch führen, insbesondere der Batterie. Verschiedene Browser haben unterschiedliche Mechanismen zur Handhabung dieses Problems, derzeit gibt es keinen Standardmechanismus. Firefox erlaubt eine begrenzte Anzahl (Kontingent) von Push-Nachrichten, die an eine Anwendung gesendet werden können, obwohl Push-Nachrichten, die Benachrichtigungen generieren, von diesem Limit befreit sind. Das Limit wird bei jedem Besuch der Site aktualisiert. In Chrome gibt es keine Begrenzungen.

Schnittstellen

PushEvent

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

PushManager

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

PushMessageData

Bietet Zugriff auf Push-Daten, die von einem Server gesendet werden, und enthält Methoden zur Bearbeitung der empfangenen Daten.

PushSubscription

Stellt die URL des Abonnementendpunkts bereit und ermöglicht das Abmelden von einem Push-Dienst.

PushSubscriptionOptions

Repräsentiert die mit dem Push-Abonnement verbundenen Optionen.

Ergänzungen für Service Worker

Die folgenden Ergänzungen zur Service Worker API wurden in der Push API-Spezifikation angegeben, um einen Einstiegspunkt für die Nutzung von Push-Nachrichten bereitzustellen. Sie überwachen und reagieren auch auf Push- und Abonnementänderungsereignisse.

ServiceWorkerRegistration.pushManager Nur lesbar

Gibt eine Referenz auf die PushManager-Schnittstelle zum Verwalten von Push-Abonnements zurück, einschließlich des Abonnierens, Abrufens eines aktiven Abonnements und Zugriffs auf den Push-Berechtigungsstatus. Dies ist der Einstiegspunkt in die Nutzung von Push-Nachrichten.

onpush

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

onpushsubscriptionchange

Ein Ereignishandler, der jedes Mal ausgelöst wird, wenn ein pushsubscriptionchange-Ereignis auftritt; zum Beispiel, wenn ein Push-Abonnement ungültig gemacht wurde oder kurz davor steht, ungültig gemacht zu werden (z.B. wenn ein Push-Dienst ein Ablaufdatum setzt.)

Beispiele

Mozillas ServiceWorker Cookbook enthält viele nützliche Push-Beispiele.

Spezifikationen

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

Browser-Kompatibilität

api.PushEvent

BCD tables only load in the browser

api.PushMessageData

BCD tables only load in the browser

Siehe auch