PushManager
{{ApiRef("Push API")}} {{SecureContext_Header}} {{AvailableInWorkers}}
The PushManager interface of the Push API provides a way to receive notifications from third-party servers as well as request URLs for push notifications.
This interface is accessed via the {{domxref("ServiceWorkerRegistration.pushManager")}} property.
Static properties
PushManager.supportedContentEncodings- : Returns an array of supported content codings that can be used to encrypt the payload of a push message.
Instance methods
{{domxref("PushManager.getSubscription()")}}- : Retrieves an existing push subscription. It returns a
{{jsxref("Promise")}}that resolves to a{{domxref("PushSubscription")}}object containing details of an existing subscription. If no existing subscription exists, this resolves to anullvalue.
- : Retrieves an existing push subscription. It returns a
{{domxref("PushManager.permissionState()")}}- : Returns a
{{jsxref("Promise")}}that resolves to the permission state of the currentPushManager, which will be one of'granted','denied', or'prompt'.
- : Returns a
{{domxref("PushManager.subscribe()")}}- : Subscribes to a push service. It returns a
{{jsxref("Promise")}}that resolves to a{{domxref("PushSubscription")}}object containing details of a push subscription. A new push subscription is created if the current service worker does not have an existing subscription.
- : Subscribes to a push service. It returns a
Deprecated methods
{{domxref("PushManager.hasPermission()")}}{{deprecated_inline}}{{non-standard_inline}}- : Returns a
{{jsxref("Promise")}}that resolves to thePushPermissionStatusof the requesting webapp, which will be one ofgranted,denied, ordefault. Replaced by{{domxref("PushManager.permissionState()")}}.
- : Returns a
{{domxref("PushManager.register()")}}{{deprecated_inline}}{{non-standard_inline}}- : Subscribes to a push subscription. Replaced by
{{domxref("PushManager.subscribe()")}}.
- : Subscribes to a push subscription. Replaced by
{{domxref("PushManager.registrations()")}}{{deprecated_inline}}{{non-standard_inline}}- : Retrieves existing push subscriptions. Replaced by
{{domxref("PushManager.getSubscription()")}}.
- : Retrieves existing push subscriptions. Replaced by
{{domxref("PushManager.unregister()")}}{{deprecated_inline}}{{non-standard_inline}}- : Unregisters and deletes a specified subscription endpoint. In the updated API, a subscription is unregistered by calling the
{{domxref("PushSubscription.unsubscribe()")}}method.
- : Unregisters and deletes a specified subscription endpoint. In the updated API, a subscription is unregistered by calling the
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
{{Specifications}}
Browser compatibility
{{Compat}}