Push API将推送服务定义为
允许应用程序服务器将推送消息发送到Web应用程序的系统。
通过调用serviceWorkerRegistration .pushManager.subscribe()
无需任何参数即可创建对服务的订阅。
如何配置此推送服务的URL?我希望.subscribe()
能够获取服务的URL参数。
Push API的姐妹规范Generic Event Delivery Using HTTP Push说:
推送服务:此资源用于创建推送消息订阅(请参阅第3节)。推送服务的URL已配置到用户代理中。
但它没有说明如何进行此配置。
答案 0 :(得分:4)
来自the second document you cite的引用回答了这个问题:
本文档故意没有描述推送服务的方式 发现。推送服务的发现留待未来的努力,如果 事实证明这是必要的。用户代理应该是 配置了推送服务的URL。
目前,浏览器附带了一些特定推送服务的内置知识,例如Chrome中的GCM。有关HTMLRocks的Push Notifications on the Open Web文章中提到了这一点:
Chrome使用GCM处理推送消息的发送和传送....其他浏览器可以免费使用任何推送服务......
但是看看浏览器是否可能在未来打开会很有趣,因此,正如您所建议的那样,我们可以在subscribe
的参数中指定我们自己选择的服务。
答案 1 :(得分:2)
您首先使用navigator.serviceWorker.register('/some-service-worker.js')
注册服务工作者,然后当您致电serviceWorkerRegistration .pushManager.subscribe()
时,此seriveceWorkerRegistration
指的是您刚刚注册的服务工作者。
最好用一个例子证明这一点:
navigator.serviceWorker.register('/some-service-worker.js').then(function() {
navigator.serviceWorker.ready.then(function(serviceWorkerRegistration) {
serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true}).then(function() {/*...*/});
});
});