我们正在开发一个使用 GCM 向最终用户发送推送通知的网站。我们已经通过了 Service Worker 等等。我们使用这个codelab教程开发了一个原型。到目前为止它工作正常,但唯一的问题是只有在打开 Chrome 时才会显示通知。当 Chrome 关闭时,通知不会发送给用户。
我想知道有什么方法可以克服这个问题,即使在浏览器关闭时也能显示通知,类似于 Safari 推送通知。提前致谢!
我们正在开发一个使用 GCM 向最终用户发送推送通知的网站。我们已经通过了 Service Worker 等等。我们使用这个codelab教程开发了一个原型。到目前为止它工作正常,但唯一的问题是只有在打开 Chrome 时才会显示通知。当 Chrome 关闭时,通知不会发送给用户。
我想知道有什么方法可以克服这个问题,即使在浏览器关闭时也能显示通知,类似于 Safari 推送通知。提前致谢!
如果您在 manifest.json 中有“背景”权限,即使 Chrome 窗口关闭,您的后台页面也能显示通知。
"permissions": [
"background"
],
如文档中所述:
当任何已安装的托管应用程序、打包应用程序或扩展程序具有“后台”权限时,Chrome 会在用户登录其计算机后立即(不可见地)运行 - 在用户启动 Chrome 之前。“后台”权限还使 Chrome 继续运行(即使在其最后一个窗口关闭后),直到用户明确退出 Chrome。
您需要在后台页面、事件页面或托管应用程序的后台窗口中使用“后台”权限。
对于 Web,请使用适用于 Chrome 和其他浏览器的 Push API。使用推送消息的好处是,即使您的页面关闭,您的 service worker 也会被唤醒并能够显示通知。当页面或浏览器关闭时,Web Sockets 和 EventSource 的连接也会关闭,因此不建议这样做。这是文档和示例。
在铬。只有那些碰巧安装了需要后台模式的扩展程序(例如环聊)的用户才能在 chrome 未“运行”时接收推送通知。依赖它似乎不是一个好主意。
chrome 团队似乎也在考虑将它用于网络推送,但到目前为止还没有 ETA。
当浏览器或标签页关闭时显示通知需要服务工作者和第三方服务(如 google firebase)来触发服务工作者。
https://github.com/web-push-libs/ - 检查这些库列表以在不同的平台上实现它。
https://github.com/rijoshrc/php-service-worker-push-notification - 克隆这个 git 存储库以查看 PHP 中的简单实现。