PushManager.subscribe()
Экспериментальная возможность: Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Метод subscribe() интерфейса PushManager позволяет осуществлять подписку на push-уведомления.
Возвращает Promise, который разрешается в объект PushSubscription (en-US), содержащий детали push-подписки. Новая push-подписка создаётся в случае, если сервис-воркер не имеет существующей подписки.
Синтаксис
PushManager.subscribe(options).then(function(pushSubscription) { ... } );
Свойства
options Необязательный-
Объект, содержащий необязательные параметры конфигурации. Может иметь следующие свойства:
userVisibleOnly: Булевое значение, указывающее на то, будет ли возвращаемая подписка использоваться для сообщений, чей эффект может быть видим для пользователя.applicationServerKey: открытый ключ ECDSA P-256, закодированный в Base64DOMStringилиArrayBuffer}, содержащий , который push-сервер будет использовать для аутентификации сервера приложений. Если указано, все сообщения с сервера вашего приложения должны использовать схему аутентификации VAPID и включать JWT, подписанный соответствующим закрытым ключом. Этот ключ **НЕ **тот же ключ ECDH, который вы используете для шифрования данных. Для получения дополнительной информации см. «Using VAPID with WebPush».
**Примечание:**Свойство, требуемое некоторыми браузерами, например Chrome и Edge.
Возвращает
Promise который разрешается в объект PushSubscription (en-US).
Пример
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