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