11

我们正在开发一个使用 GCM 向最终用户发送推送通知的网站。我们已经通过了 Service Worker 等等。我们使用这个codelab教程开发了一个原型。到目前为止它工作正常,但唯一的问题是只有在打开 Chrome 时才会显示通知。当 Chrome 关闭时,通知不会发送给用户。

我想知道有什么方法可以克服这个问题,即使在浏览器关闭时也能显示通知,类似于 Safari 推送通知。提前致谢!

4

3 回答 3

14

如果您在 manifest.json 中有“背景”权限,即使 Chrome 窗口关闭,您的后台页面也能显示通知。

"permissions": [
    "background"
],

文档中所述:

当任何已安装的托管应用程序、打包应用程序或扩展程序具有“后台”权限时,Chrome 会在用户登录其计算机后立即(不可见地)运行 - 在用户启动 Chrome 之前。“后台”权限还使 Chrome 继续运行(即使在其最后一个窗口关闭后),直到用户明确退出 Chrome。

您需要在后台页面事件页面或托管应用程序的后台窗口中使用“后台”权限。

对于 Web,请使用适用于 Chrome 和其他浏览器的 Push API。使用推送消息的好处是,即使您的页面关闭,您的 service worker 也会被唤醒并能够显示通知。当页面或浏览器关闭时,Web Sockets 和 EventSource 的连接也会关闭,因此不建议这样做。这是文档示例

于 2016-02-11T00:56:29.467 回答
2

在铬。只有那些碰巧安装了需要后台模式的扩展程序(例如环聊)的用户才能在 chrome 未“运行”时接收推送通知。依赖它似乎不是一个好主意。

chrome 团队似乎也在考虑将它用于网络推送,但到目前为止还没有 ETA。

https://code.google.com/p/chromium/issues/detail?id=402456

于 2016-02-12T18:59:14.760 回答
0

当浏览器或标签页关闭时显示通知需要服务工作者和第三方服务(如 google firebase)来触发服务工作者。

https://github.com/web-push-libs/ - 检查这些库列表以在不同的平台上实现它。

https://github.com/rijoshrc/php-service-worker-push-notification - 克隆这个 git 存储库以查看 PHP 中的简单实现。

于 2019-12-27T05:19:21.740 回答