PushManager
注意:此功能在Web Workers中可用。
PushManager
是Push API的一个接口,它提供了一种从第三方服务器接收通知以及请求推送通知 URL 的方法。
可以通过ServiceWorkerRegistration.pushManager
属性访问此接口。
静态属性
PushManager.supportedContentEncodings
-
返回一个支持的内容编码数组,可用于加密推送消息的有效负载。
实例方法
PushManager.getSubscription()
-
检索现有的推送订阅。它返回一个
Promise
,该 Promise 解析为一个PushSubscription
对象,其中包含现有订阅的详细信息。如果不存在现有订阅,则解析为null
值。 PushManager.permissionState()
-
返回一个
Promise
,该 Promise 解析为当前PushManager
的权限状态,该状态将为'granted'
、'denied'
或'prompt'
之一。 PushManager.subscribe()
-
订阅推送服务。它返回一个
Promise
,该 Promise 解析为一个PushSubscription
对象,其中包含推送订阅的详细信息。如果当前服务工作者没有现有订阅,则会创建一个新的推送订阅。
已弃用的方法
PushManager.hasPermission()
已弃用 非标准-
返回一个
Promise
,该 Promise 解析为请求的 Web 应用程序的PushPermissionStatus
,该状态将为granted
、denied
或default
之一。已由PushManager.permissionState()
替换。 PushManager.register()
已弃用 非标准-
订阅推送订阅。已由
PushManager.subscribe()
替换。 PushManager.registrations()
已弃用 非标准-
检索现有的推送订阅。已由
PushManager.getSubscription()
替换。 PushManager.unregister()
已弃用 非标准-
注销并删除指定的订阅端点。在更新后的 API 中,通过调用
PushSubscription.unsubscribe()
方法注销订阅。
示例
js
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);
},
);
});
规范
规范 |
---|
Push API # pushmanager-interface |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。