无法订阅推送通知(&A;T)
我正在尝试订阅PushManager以发送推送通知,但调用Subscribe时总是出错。
这是我的订阅电话
registration.pushManager.subscribe({ userVisibleOnly: true })
.then(function (subscription) { /* ... */})
.catch(function (err) { /* ... */})
如您所见,没有什么奇怪的,而且该调用总是抛出
DOMException:注册失败-推送服务错误
我不确定为什么会这样。 我到目前为止所检查的
- 我的
manifest.json
中有一个gcm_sender_id
属性。 - 通知权限在客户端被授予。
registration.pushManager.getSubscription()
始终获取null
和订阅始终引发上述错误。
我还应该看什么?欢迎任何帮助成功订阅推送通知的人,顺便说一下,我正在使用Chrome 55,如果您需要更多信息,请让我知道。
编辑:所有注册码都在registerServiceWorker
函数上。
谢谢。
解决方案
假定您已经正确注册了服务工作者,使用如下内容:
navigator.serviceWorker.register('/serviceworker.js', {
scope: '/'
});
我建议您像我一样为您的服务工作者使用相对路径,而不是像您在代码中那样使用window.Location.Origin,并且最好将ServiceWorker文件保存在根目录。
使用此方法订阅推送并获取终结点。
navigator.serviceWorker.ready
.then(function(serviceWorkerRegistration) {
return serviceWorkerRegistration.pushManager.subscribe({
userVisibleOnly: true
});
})
.then(function(subscription) {console.log(subscription.endpoint);});
如果仍不起作用: -尝试从Chrome://serviceWorker-interals注销现有Worker,并确保在执行此操作时关闭所有选项卡。
如果仍不起作用: -尝试通过在Chrome右上角点击您的名字来创建一个新的Chrome个人资料。(我曾经面对过这一点)
检查this代码以供参考。
相关文章