PushManager.subscribe()

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.

Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

Примечание: Эта возможность доступна в Web Workers.

Метод subscribe() интерфейса PushManager позволяет осуществлять подписку на push-уведомления.

Возвращает Promise, который разрешается в объект PushSubscription, содержащий детали push-подписки. Новая push-подписка создаётся в случае, если сервис-воркер не имеет существующей подписки.

Синтаксис

PushManager.subscribe(options).then(function(pushSubscription) { ... } );

Свойства

options Необязательный

Объект, содержащий необязательные параметры конфигурации. Может иметь следующие свойства:

  • userVisibleOnly: Булевое значение, указывающее на то, будет ли возвращаемая подписка использоваться для сообщений, чей эффект может быть видим для пользователя.
  • applicationServerKey: открытый ключ ECDSA P-256, закодированный в Base64 DOMString или ArrayBuffer, содержащий , который push-сервер будет использовать для аутентификации сервера приложений. Если указано, все сообщения с сервера вашего приложения должны использовать схему аутентификации VAPID и включать JWT, подписанный соответствующим закрытым ключом. Этот ключ **НЕ **тот же ключ ECDH, который вы используете для шифрования данных. Для получения дополнительной информации см. «Using VAPID with WebPush».

**Примечание:**Свойство, требуемое некоторыми браузерами, например Chrome и Edge.

Возвращает

Promise который разрешается в объект PushSubscription.

Пример

js
this.onpush = function (event) {
  console.log(event.data);
  // Отсюда можно записывать данные в IndexedDB, отправлять их в любое
  // открытое окно, отображать уведомление и т. д.
};

navigator.serviceWorker
  .register("serviceworker.js")
  .then(function (serviceWorkerRegistration) {
    serviceWorkerRegistration.pushManager.subscribe().then(
      function (pushSubscription) {
        console.log(pushSubscription.subscriptionId);
        console.log(pushSubscription.endpoint);
        // Детали push-подписки, требуемые сервером приложения,
        // теперь доступны, и могут быть отправлены, к примеру,
        // при помощи XMLHttpRequest.
      },
      function (error) {
        // При разработке это часто помогает отлавливать ошибки в консоли.
        // В продакшен-среде это также может быть полезно для отправки отчёта
        // об ошибках на сервер приложения.
        console.log(error);
      },
    );
  });

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

Specification
Push API
# dom-pushmanager-subscribe

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

BCD tables only load in the browser

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