PushManager.subscribe()

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

Метод 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.

Пример

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 Status Comment
Push API
Определение 'subscribe()' в этой спецификации.
Рабочий черновик Initial definition.

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

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 42.0 (Да) ? ? ?
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support Нет Нет (Да) (Да) ? ? ? 42.0

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