--- title: PushManager.subscribe() slug: Web/API/PushManager/subscribe translation_of: Web/API/PushManager/subscribe ---
{{SeeCompatTable}}{{ApiRef("Push API")}}
Метод subscribe()
интерфейса {{domxref("PushManager")}} позволяет осуществлять подписку на push-уведомления.
Возвращает {{jsxref("Promise")}}, который разрешается в объект {{domxref("PushSubscription")}}, содержащий детали push-подписки. Новая push-подписка создаётся в случае, если сервис-воркер не имеет существующей подписки.
PushManager.subscribe(options).then(function(pushSubscription) { ... } );
options {{optional_inline}}
userVisibleOnly
: Булевое значение, указывающее на то, будет ли возвращаемая подписка использоваться для сообщений, чей эффект может быть видим для пользователя.applicationServerKey
: открытый ключ ECDSA P-256, закодированный в Base64 {{domxref ('DOMString')}} или {{domxref ('ArrayBuffer')}}}, содержащий , который push-сервер будет использовать для аутентификации сервера приложений. Если указано, все сообщения с сервера Вашего приложения должны использовать схему аутентификации VAPID и включать JWT, подписанный соответствующим закрытым ключом. Этот ключ НЕ тот же ключ ECDH, который вы используете для шифрования данных. Для получения дополнительной информации см. «Using VAPID with WebPush».Примечание: Свойство, требуемое некоторыми браузерами, например Chrome и Edge.
{{jsxref("Promise")}} который разрешается в объект {{domxref("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 |
---|---|---|
{{SpecName('Push API', '#widl-PushManager-subscribe-Promise-PushSubscription--PushSubscriptionOptions-options', 'subscribe()')}} | {{Spec2('Push API')}} | Initial definition. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | {{CompatChrome(42.0)}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatNo}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatChrome(42.0)}} |