PushSubscription - 提供了订阅的 URL 端点,并可用于取消订阅推送服务

这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。

PushSubscriptionPush 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 的定义
工作草案 初始定义

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持42 支持441 不支持29 不支持
endpoint4216441 不支持29 不支持
expirationTime6016 不支持 不支持47 不支持
getKey()4216441 不支持29 不支持
options4216441 不支持29 不支持
subscriptionId42 支持 不支持 不支持29 不支持
toJSON()421746 不支持 支持 不支持
unsubscribe()4216441 不支持 支持 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS 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)已被禁用。

相关链接