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
Promise
that resolves to aPushSubscription
object containing details of an existing subscription. If no existing subscription exists, this resolves to anull
value. PushManager.permissionState()
-
Returns a
Promise
that 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
Promise
that resolves to aPushSubscription
object 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
Promise
that resolves to thePushPermissionStatus
of 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