--- title: PushManager.subscribe() slug: Web/API/PushManager/subscribe translation_of: Web/API/PushManager/subscribe ---
{{SeeCompatTable}}{{ApiRef("Push API")}}
{{domxref("PushManager")}} 的 subscribe()
接口订阅了一个推送服务。
返回一个 {{jsxref("Promise")}} 形式的 {{domxref("PushSubscription")}} 对象,该对象包含了推送订阅详情。如果当前 service worker 没有已存在的订阅,则会创建一个新的推送订阅。
PushManager.subscribe(options).then(function(pushSubscription) { ... } );
options {{optional_inline}}
一个包含可选配置参数的对象。包含以下属性:
userVisibleOnly
: 布尔值,表示返回的推送订阅将只能被用于对用户可见的消息。返回 {{domxref("PushSubscription")}} 对象的 {{jsxref("Promise")}}。
this.onpush = function(event) { console.log(event.data); //
这里可以向 IndexDB 写入数据,向任何打开的窗口发送数据以及显示通知等} navigator.serviceWorker.register('serviceworker.js').then( function(serviceWorkerRegistration) { var options = { userVisibleOnly: true, applicationServerKey: applicationServerKey }; serviceWorkerRegistration.pushManager.subscribe(options).then( function(pushSubscription) { console.log(pushSubscription.endpoint); // 应用服务器所需的推送订阅详情现在可用,并且可以通过如 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)}} | {{CompatGeckoDesktop(44.0)}}[1] | {{CompatNo}} | {{CompatUnknown}} | {{CompatNo}} |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | {{CompatNo}} | {{CompatNo}} | {{CompatGeckoMobile(48)}}[2] | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatNo}} | {{CompatChrome(42.0)}} |