【问题标题】:Google Chrome Push Notifications not working if the browser is closed?如果浏览器关闭,Google Chrome 推送通知不起作用?
【发布时间】:2016-12-26 08:57:33
【问题描述】:

上面写着here,即使关闭浏览器,推送通知也会起作用,但我测试过,事实并非如此。只有在浏览器打开时我才会收到推送通知(无论特定网页是否打开都无关紧要)。

我在 chrome for Desktop 和 chrome for Android 上对此进行了测试(更新到最新版本后)。

我的问题是:- 要让推送通知工作,浏览器是否应该打开?

注意:- 我使用this 进行测试。

【问题讨论】:

  • 我已经测试了您提供的链接,它运行良好。通过打开网站进行测试,允许推送通知,关闭 Chrome,然后使用 curl 触发推送请求。
  • @KevinFarrugia 您在哪个平台上进行了测试?我在 Windows 10 和 Android M 上进行了测试。对我来说,关闭浏览器时它不起作用。
  • 在 Android M 上测试
  • 其他 cmets 建议在 Android 上,即使浏览器关闭,Chrome 和 Firefox 也会显示推送通知,但根据我的经验,可能发生的情况是通知会到达,但只会在浏览器出现重新打开(Android 80 的 Chrome,Android 68 的 Firefox)。当然看起来不可靠。
  • 好吧,似乎大多数平台的情况都是一样的。在移动设备上,android,不需要打开浏览器来接收推送通知,但在桌面 oss 上运行浏览器是必要的。如果在桌面 oss 和其他平台上,推送消息的接收也可以由平台自己的与后台任务或推送通知作业相关的服务处理,然后交给 Web 服务工作者(如果需要,唤醒他们),那就太好了那时我们不需要正在运行的浏览器。通过 Google Play 服务,afaik 在 android 中就是这种情况。

标签: javascript google-chrome push-notification service-worker progressive-web-apps


【解决方案1】:

根据Can I Use,Chrome 和 Firefox 桌面浏览器需要运行浏览器才能接收推送通知;移动浏览器通常不会。

【讨论】:

  • 桌面上的 Microsoft Edge(基于 Chromium)也是如此。
【解决方案2】:

在桌面上,浏览器需要一个正在运行的进程。例如,在 Mac OS X 上,浏览器可能没有打开窗口,但如果您查看 Dock,图标下方的灯可能会发光(意味着它有一个进程正在运行)。在这种情况下,您应该会收到推送消息。

如果浏览器完全退出,则推送消息将无法通过。

这同样适用于 Windows 和 Linux。

在 android 上,无论浏览器是否打开,您都应该收到消息。这部分(据我所知)是因为 android 管理它与推送服务而不是浏览器的连接,因此它会尽可能接收消息。

【讨论】:

  • 感谢马特的回答和推送通知在线演示......这仍然适用于 2019 年吗?
  • 我相信情况仍然如此。
【解决方案3】:

消息应该(最终)通过,即使它们是在浏览器关闭或设备离线等情况下发送的。(这对我使用 https://gauntface.github.io/simple-push-demo/ 和其他测试有效。)

【讨论】:

  • 谢谢,我可以确认这适用于 Chrome 85。(以前发送的)通知将在浏览器启动或重新连接到网络时发送。
【解决方案4】:

我参与了演示以在 Google Chrome 和 Firefox 上提供推送通知。演示 -> https://twitter.com/d_danailov/status/1163824171480166400

如果有人有问题可以在 Twitter 上联系我。

公开网址:https://push-notifications-ddanailov.firebaseapp.com/

回购:https://github.com/dimitardanailov/push-notifications

【讨论】:

    【解决方案5】:

    打开设置(在 chrome 中)

    执行以下操作:

    > advanced 
        > system >
            "continue running background apps when chrome is closed" 
                 >enable
    

    【讨论】:

      【解决方案6】:

      在桌面上,浏览器需要运行,因为这是接收推送消息的进程。某些扩展程序(例如环聊)会强制浏览器继续运行,即使在最后一个选项卡关闭时也是如此,因此对于安装了此类扩展程序的用户,推送将一直有效。

      在 Android 上,不需要运行浏览器,因为负责接收消息的实体已被嵌入到 Google Play 服务中。

      Chrome 团队正在处理https://bugs.chromium.org/p/chromium/issues/detail?id=402456 中的桌面问题

      【讨论】:

        【解决方案7】:

        如果允许 Chrome 在后台运行(可在设置中配置),则可以编写可以运行 background script 的 Chrome 扩展程序。也可以use GCM

        编辑:

        即使没有打开任何选项卡或窗口,Service Worker 也必须在后台运行,必须至少安装一个具有background 权限的 Chrome 扩展程序,并且必须允许 Chrome 在后台运行应用程序。在 Linux 上测试。

        【讨论】:

          【解决方案8】:

          是的,其他用户是对的,如果关闭浏览器,则无法在 Windows 上接收它们除非浏览器在后台运行,某些 Chrome 应用程序和扩展程序可以强制这样做。我最近遇到了这个并发现了这个扩展,我相信这可能会有所帮助。即使窗口关闭,它也会让浏览器在后台运行,但除此之外不做任何事情(它是开源的,可能上传到 Chrome 商店的版本与该版本匹配)

          https://chrome.google.com/webstore/detail/lightning-reopen/ahphokgmcecbjeipkfkamcdmemghkaph

          【讨论】:

            猜你喜欢
            • 2019-02-14
            • 2021-03-29
            • 2018-01-24
            • 2015-07-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-04-15
            • 2018-04-27
            相关资源
            最近更新 更多