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 with JavaScript enabled. Enable JavaScript to view data.

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

* Использование Push API (en-US)
* Push сообщения в Open Web, Matt Gaunt