PushManager
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2023.
* Some parts of this feature may have varying levels of support.
Secure context: This feature is available only insecure contexts (HTTPS), in some or allsupporting browsers.
Note: This feature is available inWeb Workers.
ThePushManager interface of thePush API provides a way to receive notifications from third-party servers as well as request URLs for push notifications.
This interface is accessed via theServiceWorkerRegistration.pushManager property.
In this article
Static properties
PushManager.supportedContentEncodingsReturns an array of supported content codings that can be used to encrypt the payload of a push message.
Instance methods
PushManager.getSubscription()Retrieves an existing push subscription. It returns a
Promisethat resolves to aPushSubscriptionobject containing details of an existing subscription. If no existing subscription exists, this resolves to anullvalue.PushManager.permissionState()Returns a
Promisethat resolves to the permission state of the currentPushManager, which will be one of'granted','denied', or'prompt'.PushManager.subscribe()Subscribes to a push service. It returns a
Promisethat resolves to aPushSubscriptionobject containing details of a push subscription. A new push subscription is created if the current service worker does not have an existing subscription.
Deprecated methods
PushManager.hasPermission()DeprecatedNon-standardReturns a
Promisethat resolves to thePushPermissionStatusof the requesting webapp, which will be one ofgranted,denied, ordefault. Replaced byPushManager.permissionState().PushManager.register()DeprecatedNon-standardSubscribes to a push subscription. Replaced by
PushManager.subscribe().PushManager.registrations()DeprecatedNon-standardRetrieves existing push subscriptions. Replaced by
PushManager.getSubscription().PushManager.unregister()DeprecatedNon-standardUnregisters and deletes a specified subscription endpoint. In the updated API, a subscription is unregistered by calling the
PushSubscription.unsubscribe()method.
Example
this.onpush = (event) => { console.log(event.data); // From here we can write the data to IndexedDB, send it to any open // windows, display a notification, etc.};navigator.serviceWorker .register("serviceworker.js") .then((serviceWorkerRegistration) => { serviceWorkerRegistration.pushManager.subscribe().then( (pushSubscription) => { console.log(pushSubscription.endpoint); // The push subscription details needed by the application // server are now available, and can be sent to it using, // for example, the fetch() API. }, (error) => { console.error(error); }, ); });Specifications
| Specification |
|---|
| Push API> # pushmanager-interface> |