我们正在开发一个网站,该网站使用GCM向最终用户发送推送通知。我们已经通过服务工作者和所有人。我们使用这个codelab教程开发了一个原型。它目前正在运行,但唯一的问题是仅在打开Chrome时才会显示通知。 Chrome关闭后,通知无法覆盖用户。
我想知道有没有什么办法可以解决这个问题,即使浏览器关闭也会显示通知,类似于Safari推送通知。提前谢谢!
答案 0 :(得分:11)
如果您在manifest.json中拥有“background”权限,即使Chrome窗口关闭,您的后台页面也会显示通知。
"permissions": [
"background"
],
如documentation中所述:
如果任何已安装的托管应用,打包应用或扩展程序具有“后台”权限,则只要用户登录其计算机,Chrome就会立即运行(无形) - 在用户启动Chrome之前。 “后台”权限还允许Chrome继续运行(即使在最后一个窗口关闭后),直到用户明确退出Chrome。
您需要对托管应用使用background page,event page或background window的“后台”权限。
对于网络,请使用适用于Chrome和其他浏览器的Push API。使用推送消息的优点是,即使您的页面已关闭,您的服务工作人员也会被唤醒并能够显示通知。当页面或浏览器关闭时,Web套接字和EventSource的连接已关闭,因此不建议这样做。这是documentation和example。
答案 1 :(得分:2)
在Chrome中。只有碰巧安装了需要后台模式的扩展程序的用户(如环聊)才能在Chrome未“运行”时接收推送通知。依靠它似乎不是一个好主意。
Chrome团队似乎也考虑将其用于网络推送,但到目前为止还没有ETA。
答案 2 :(得分:0)
在关闭浏览器或选项卡时显示通知需要服务人员和第三方服务(例如google firebase)来触发服务人员。
https://github.com/web-push-libs/-检查这些库列表以在不同平台上实现。
https://github.com/rijoshrc/php-service-worker-push-notification-克隆此git存储库以查看PHP中的简单实现。