Push API
Hinweis: Diese Funktion ist in Web Workers verfügbar.
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 einePushSubscription
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
Schreibgeschützt-
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