PushManager
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 ServiceWorkerRegistration.pushManager property.
Properties
PushManager.supportedContentEncodings-
Returns an array of supported content codings that can be used to encrypt the payload of a push message.
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() -
Returns a
Promisethat resolves to thePushPermissionStatusof the requesting webapp, which will be one ofgranted,denied, ordefault. Replaced byPushManager.permissionState(). -
PushManager.register() -
Subscribes to a push subscription. Replaced by
PushManager.subscribe(). -
PushManager.registrations() -
Retrieves existing push subscriptions. Replaced by
PushManager.getSubscription(). -
PushManager.unregister() -
Unregisters and deletes a specified subscription endpoint. In the updated API, a subscription is unregistered by calling the
PushSubscription.unsubscribe()method.
Example
this.onpush = function(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( function(serviceWorkerRegistration) { serviceWorkerRegistration.pushManager.subscribe().then( function(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, an XMLHttpRequest. }, function(error) { // During development it often helps to log errors to the // console. In a production environment it might make sense to // also report information about errors back to the // application server. console.log(error); } ); });
Specifications
| Specification |
|---|
| Push API # pushmanager-interface |
Browser compatibility
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
PushManager |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No
See bug 421921.
|
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
getSubscription |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
hasPermission |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
permissionState |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
register |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
registrations |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
subscribe |
42
The
options parameter with a applicationServerKey value is required. |
17 |
44
["Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.", "From Firefox 72 onwards, can only be called in response to a user gesture such as a
click event."] |
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
supportedContentEncodings |
60 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
47 |
No |
No |
60 |
48
Push enabled by default.
|
44 |
No |
4.0 |
unregister |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
|
No |
29 |
No |
No |
42 |
48
Push enabled by default.
|
29 |
No |
4.0 |
worker_support |
42 |
17 |
44
Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers.
|
No |
29 |
No |
No |
42 |
48 |
29 |
No |
4.0 |
See also
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/PushManager