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

BCD tables only load in the browser

Véase también