PushSubscription - 提供了订阅的 URL 端点,并可用于取消订阅推送服务
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
PushSubscription
是 Push API 的接口,提供了订阅的 URL 端点,并可用于取消订阅推送服务。
该接口的实例可以序列化。
属性
PushSubscription.endpoint
只读
一个 USVString
包含与推送订阅相关联的端点。
PushSubscription.expirationTime
只读
一个 DOMHighResTimeStamp
,表示与推送订阅相关联的订阅到期时间,如果没有则为 null
。
PushSubscription.options
只读
包含用于创建订阅选项的对象。
PushSubscription.subscriptionId
只读
一个 DOMString
,包含与推送订阅关联的订阅 ID。
方法
PushSubscription.getKey()
返回一个 ArrayBuffer
,其中包含客户端的公共密钥,可以将该公共密钥发送到服务器并用于加密推送消息数据。
PushSubscription.toJSON()
标准序列化程序 — 返回订阅属性的 JSON 表示形式。
PushSubscription.unsubscribe()
启动取消订阅服务的异步过程,返回一个 Promise
,当成功取消注册当前订阅时,它解析为一个 Boolean
。
实例
navigator.serviceWorker.ready.then(function(reg) {
reg.pushManager.getSubscription().then(function(subscription) {
subscription.unsubscribe().then(function(successful) {
// 您已成功退订
}).catch(function(e) {
// 取消订阅失败
})
})
});
规范
规范 | 状态 | 备注 |
---|---|---|
Push API PushSubscription 的定义 |
工作草案 | 初始定义 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 42 | 支持 | 441 | 不支持 | 29 | 不支持 |
endpoint | 42 | 16 | 441 | 不支持 | 29 | 不支持 |
expirationTime | 60 | 16 | 不支持 | 不支持 | 47 | 不支持 |
getKey() | 42 | 16 | 441 | 不支持 | 29 | 不支持 |
options | 42 | 16 | 441 | 不支持 | 29 | 不支持 |
subscriptionId | 42 | 支持 | 不支持 | 不支持 | 29 | 不支持 |
toJSON() | 42 | 17 | 46 | 不支持 | 支持 | 不支持 |
unsubscribe() | 42 | 16 | 441 | 不支持 | 支持 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 42 | 未知 | 48 | 未知 | 29 | 不支持 |
endpoint | 不支持 | 42 | 未知 | 48 | 未知 | 29 | 不支持 |
expirationTime | 不支持 | 60 | 未知 | 不支持 | 未知 | 44 | 不支持 |
getKey() | 不支持 | 42 | 未知 | 48 | 未知 | 29 | 不支持 |
options | 不支持 | 42 | 未知 | 48 | 未知 | 29 | 不支持 |
subscriptionId | 不支持 | 42 | 未知 | 不支持 | 未知 | 29 | 不支持 |
toJSON() | 不支持 | 50 | 未知 | 48 | 未知 | 支持 | 不支持 |
unsubscribe() | 不支持 | 50 | 未知 | 48 | 未知 | 支持 | 不支持 |
1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务 worker(和 Push)已被禁用。