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 einePushSubscription
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 |