我只有在打开Chrome浏览器时才能收到Facebook网页的推送通知。我知道这些通知是通过service worker发送的。我想知道,即使浏览器关闭了,这个后台同步是否仍在进行,还是只有在打开Chrome浏览器时这些服务工作者同步进程才会开始并开始发送推送通知。
我只有在打开Chrome浏览器时才能收到Facebook网页的推送通知。我知道这些通知是通过service worker发送的。我想知道,即使浏览器关闭了,这个后台同步是否仍在进行,还是只有在打开Chrome浏览器时这些服务工作者同步进程才会开始并开始发送推送通知。
首先,需要说明的是这取决于平台。我的理解是:
在像Windows和Mac OS X这样的桌面平台上,浏览器需要运行一些后台进程才能使服务工作者运行。在Mac OS X上,这很容易检测到,因为浏览器可能没有窗口打开,但浏览器仍然有闪烁的点。
在移动平台上,更容易监听事件并以高效的方式处理它们,因此在这些情况下,平台可以唤醒浏览器,然后处理任何相应的事件。
以上适用于任何服务工作者API。
在桌面端:如果浏览器完全关闭,则服务工作者将无法运行,并且不会分派任何事件(即没有推送或后台同步事件)。
在移动端:事件仍将被分派(即当用户设备联机时,后台同步将触发,推送将被接收并引发推送事件)。
我认为如果浏览器关闭了,Service Worker 将无法运行。因为只有在我打开浏览器后,Service Worker 才能发送推送通知。如果它在后台运行,则即使关闭浏览器,它也可以发送通知。
来源 https://web.dev/push-notifications-faq/#why-doesn't-push-work-when-the-browser-is-closed
有点离题,但是可以编写Chrome扩展程序,在设置中允许Chrome在后台运行(可配置),背景脚本也可以运行。它还可以使用GCM。