PushManager
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用。
PushManager 接口是 Push API 的一部分,它提供了一种接收第三方服务器通知以及请求推送通知 URL 的方法。
可以通过 ServiceWorkerRegistration.pushManager 属性访问此接口。
静态属性
PushManager.supportedContentEncodings-
返回一个数组,其中包含可用于加密推送消息载荷(payload)的受支持的内容编码。
实例方法
PushManager.getSubscription()-
检索现有的推送订阅。它返回一个
Promise,该 Promise 解析为一个包含现有订阅详细信息的PushSubscription对象。如果没有现有的订阅,则解析为null值。 PushManager.permissionState()-
返回一个
Promise,该 Promise 解析为当前PushManager的权限状态,该状态将是'granted'、'denied'或'prompt'之一。 PushManager.subscribe()-
订阅推送服务。它返回一个
Promise,该 Promise 解析为一个包含推送订阅详细信息的PushSubscription对象。如果当前 service worker 没有现有的订阅,则会创建一个新的推送订阅。
已废弃的方法
PushManager.hasPermission()已弃用 非标准-
返回一个
Promise,该 Promise 解析为请求的 Web 应用程序的PushPermissionStatus,该状态将是granted、denied或default之一。已被PushManager.permissionState()替换。 PushManager.register()已弃用 非标准-
订阅推送订阅。已被
PushManager.subscribe()替换。 PushManager.registrations()已弃用 非标准-
检索现有的推送订阅。已被
PushManager.getSubscription()替换。 PushManager.unregister()已弃用 非标准-
注销并删除指定的订阅端点。在更新的 API 中,可以通过调用
PushSubscription.unsubscribe()方法来注销订阅。
示例
this.onpush = (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((serviceWorkerRegistration) => {
serviceWorkerRegistration.pushManager.subscribe().then(
(pushSubscription) => {
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, the fetch() API.
},
(error) => {
console.error(error);
},
);
});
规范
| 规范 |
|---|
| 推送 API # pushmanager-interface |
浏览器兼容性
加载中…