Push API的推送服务URL是如何设置的?

时间:2015-07-14 17:45:08

标签: service-worker progressive-web-apps web-push push-api

Push API将推送服务定义为

  

允许应用程序服务器将推送消息发送到Web应用程序的系统。

通过调用serviceWorkerRegistration .pushManager.subscribe()无需任何参数即可创建对服务的订阅。

如何配置此推送服务的URL?我希望.subscribe()能够获取服务的URL参数。

Push API的姐妹规范Generic Event Delivery Using HTTP Push说:

  

推送服务:此资源用于创建推送消息订阅(请参阅第3节)。推送服务的URL已配置到用户代理中。

但它没有说明如何进行此配置。

2 个答案:

答案 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() {/*...*/});
    });
});