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, закодированный в Base64DOMString
или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 |
---|
Push API # dom-pushmanager-subscribe |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Using the Push API
- Push Notifications on the Open Web, Matt Gaunt