无法订阅推送通知(&A;T) [英] Can't subscribe to Push notification

查看:25
本文介绍了无法订阅推送通知(&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代码以供参考。

这篇关于无法订阅推送通知(&A;T)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆