PushManager

Baseline 2023
Newly available

Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

La interfaz PushManager de la API Push proporciona una forma de recibir notificaciones de servidores de terceros, así como solicitar URL para notificaciones push.

Se accede a esta interfaz a través de la propiedad ServiceWorkerRegistration.pushManager.

Propiedades estáticas

PushManager.supportedContentEncodings

Devuelve una matriz de codificaciones de contenido admitidas que se pueden usar para cifrar la carga útil de un mensaje push.

Métodos de instancia

PushManager.getSubscription()

Recupera una suscripción push existente. Devuelve un objeto Promise que se resuelve en un objeto PushSubscription que contiene detalles de una suscripción existente. Si no existe una suscripción existente, esto se resuelve en un valor null.

PushManager.permissionState()

Devuelve un Promise que resuelve el estado de permiso del PushManager actual, que será 'granted', 'denied' o 'prompt'.

PushManager.subscribe()

Se suscribe a un servicio push. Devuelve un objeto Promise que se resuelve en un objeto PushSubscription que contiene detalles de una suscripción push. Se crea una nueva suscripción push si el trabajador del servicio actual no tiene una suscripción existente.

Métodos obsoletos

PushManager.hasPermission() Obsoleto

Devuelve un Promise que se resuelve en PushPermissionStatus de la aplicación web solicitante, que será granted, denied o default. Reemplazado por PushManager.permissionState().

PushManager.register() Obsoleto

Se suscribe a una suscripción push. Reemplazado por PushManager.subscribe().

PushManager.registrations() Obsoleto

Recupera suscripciones push existentes. Reemplazado por PushManager.getSubscription().

PushManager.unregister() Obsoleto

Anula el registro y elimina un extremo de suscripción especificado. En la API actualizada, se anula el registro de una suscripción llamando al método PushSubscription.unsubscribe().

Example

js
this.onpush = (event) => {
  console.log(event.data);
  // Desde aquí podemos escribir los datos en una IndexedDB, enviarlos
  // a cualquier ventana abierta, mostrar una notificación, etc.
};

navigator.serviceWorker
  .register("serviceworker.js")
  .then((serviceWorkerRegistration) => {
    serviceWorkerRegistration.pushManager.subscribe().then(
      (pushSubscription) => {
        console.log(pushSubscription.endpoint);
        // Los detalles de suscripción push que necesita el servidor
        // de aplicaciones ahora están disponibles y se pueden enviar
        // mediante, por ejemplo, XMLHttpRequest.
      },
      (error) => {
        console.error(error);
      },
    );
  });

Especificaciones

Specification
Push API
# pushmanager-interface

Compatibilidad con navegadores

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
PushManager
getSubscription
hasPermission
DeprecatedNon-standard
permissionState
register
DeprecatedNon-standard
registrations
DeprecatedNon-standard
subscribe
supportedContentEncodings static property
unregister
DeprecatedNon-standard

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
See implementation notes.

Véase también