PushManager - Web API 接口参考 编辑
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
Push API 的PushManager
接口提供了从第三方服务器接收消息通知的能力。
可以通过ServiceWorkerRegistration.pushManager属性获得
注意: 这个属性替代了已被废弃的PushRegistrationManager
Properties
None.
Methods
PushManager.getSubscription()
- 用于获取已经存在的push订阅。返回一个
Promise
,这个Promise
包装着push订阅信息的PushSubscription
对象。如果没有已经存在的订阅,则返回null
。 PushManager.permissionState()
- 返回一个
Promise
,标识这当前PushManager
的权限状态,只能是'granted',
'denied'
,'prompt'
中的一种。 PushManager.subscribe()
- 向push服务器(即第三方push server)发起订阅。返回一个
Promise
,这个Promise
包装着push订阅信息的PushSubscription
对象。如果当前的service worke没有已经存在的订阅,则会创建一个新的push订阅。
已废弃的方法
PushManager.hasPermission()
- (已废弃)返回一个
Promise
,标识着该webapp的PushPermissionStatus
状态,该状态只能是'granted',
'denied'
,'default'
中的一种。目前已经被PushManager.permissionState()
取代。 PushManager.register()
- (已废弃)发起注册push订阅。目前已经被
PushManager.subscribe()
取代。 PushManager.registrations()
- (已废弃)返回已存在的push订阅信息。目前已经被
PushManager.getSubscription()
取代。 PushManager.unregister()
- (已废弃)取消注册并删除指定的注册信息。在更新后的API中,请使用
PushSubscription.unsubscribe()
方法取消注册。
示例
this.onpush = function(event) {
console.log(event.data);
// 这里我们可以将数据写入IndexedDB,发送给其他window对象,或者显示一个通知
}
navigator.serviceWorker.register('serviceworker.js').then(
function(serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe().then(
function(pushSubscription) {
console.log(pushSubscription.subscriptionId);
console.log(pushSubscription.endpoint);
// 现在我们已经获取到了服务器需要的push订阅信息,我们可以使用XHR将它们发送给服务器
}, function(error) {
// 在开发环境下打印错误是很有帮助的。在生产环境下,将错误上报到服务器也是十分必要的
console.log(error);
}
);
});
Specifications
Specification | Status | Comment |
---|---|---|
Push API PushManager | Working Draft | Initial definition. |
Browser compatibility
We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | 42.0 | 44.0 (44.0)[1] | 未实现 | ? | 未实现 |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | 未实现 | 未实现 | 48.0 (48)[2] | 未实现 | 未实现 | 未实现 | 未实现 | 42.0 |
- [1] Push (and Service Workers) have been disabled in the Firefox 45 Extended Support Release (ESR.)
- [2] Push has been enabled by default on Firefox for Android version 48.
See also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论