PushManager

Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

Интерфейс PushManager из Push API предоставляет возможность получать уведомления от сторонних серверов, а также запрашивать URL для push уведомлений.

Этот интерфейс доступен через свойство ServiceWorkerRegistration.pushManager.

Примечание: Этот интерфейс заменил функциональность, предлагаемую устаревшим PushRegistrationManager.

Свойства

PushManager.supportedContentEncodings (en-US)

Возвращает массив со списком возможных алгоритмов кодирования, которые могут быть использованы для шифрования полезной нагрузки пуш-уведомления.

Методы

PushManager.subscribe()

Подписка на пуш сервис. Возвращает промис, который разрешается в PushSubscription (en-US) объект, содержащий детали новой push подписки.

PushManager.getSubscription() (en-US)

Извлекает существующую push подписку. Возвращает промис, который разрешается в PushSubscription (en-US) объект, содержащий детали существующей подписки.

PushManager.permissionState() (en-US)

Возвращает Promise, который разрешается в состояние доступа текущего PushManager, которое может быть одним из 'granted', 'denied', или 'default'.

Устаревшие методы

PushManager.hasPermission() (en-US)

Returns a Promise that resolves to the PushPermissionStatus of the requesting webapp, which will be one of granted, denied, or default. Replaced by PushManager.permissionState() (en-US).

PushManager.register() (en-US)

Subscribes to a push subscription. Replaced by PushManager.subscribe().

PushManager.registrations() (en-US)

Retrieves existing push subscriptions. Replaced by PushManager.getSubscription() (en-US).

PushManager.unregister() (en-US)

Unregisters and deletes a specified subscription endpoint. In the updated API, a subscription is can be unregistered via the PushSubscription.unsubscribe() (en-US) method.

Пример

js
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.subscriptionId);
        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);
      },
    );
  });

Спецификации

Specification
Push API
# pushmanager-interface

Совместимость с браузерами

BCD tables only load in the browser

Смотрите также