如何在我的 PWA 关闭时触发离线后台功能
How to trigger offline background function when my PWA is closed
基于这个答案:
Using setInterval in Service worker 三年前,
我想知道是否有任何方法可以让 PWA(通过或不通过 service worker)触发一些基于时间而不是网络相关的后台功能。
我想在我的 PWA 关闭时使用导航器内置通知 Chrome API 每分钟推送一个通知。
我看到服务工作者的主要目标是缓存资源,但在每份文档中我都看到它们以某种方式 "always active",所以我觉得其中一个可用的事件侦听器应该做我想做的事情.
当您的 PWA 关闭时,每分钟 静默重启您注册的 Service Worker 是浏览器主动阻止的事情。在很多情况下,这将成为恶意行为的载体。
话虽这么说,但有两种选择可以不静默地或不频繁地启动注册的 Service Worker。
推送通知
在 "not silently" 方面,您可以使用 push notifications 根据从推送通知服务器发送的传入消息启动您的服务工作者。用户需要先选择接收推送通知。您需要在 Service Worker 的 push
事件处理程序中显示用户可见的通知,因此此方法不是 "silent."
您需要通过远程服务器触发这些 push
事件。您不能通过来自本地设备的 push
事件 "wake up" 服务人员。
定期后台同步
Periodic background sync 是一个较新的功能,更接近您描述的内容。它允许满足特定条件的网络应用程序注册一个 periodicsync
事件,该事件将定期自动触发(无需删除服务器)。您不需要在此 periodicsync
事件处理程序中显示用户可见的通知。
适用于定期后台同步的具体限制取决于浏览器,但至少在 Chrome 中,您无法注册 periodicsync
在任何地方触发的事件几乎与一次触发的频率一样一分钟。如果其他条件都满足,一天一件事的发生频率与您预期的差不多。
基于这个答案: Using setInterval in Service worker 三年前,
我想知道是否有任何方法可以让 PWA(通过或不通过 service worker)触发一些基于时间而不是网络相关的后台功能。
我想在我的 PWA 关闭时使用导航器内置通知 Chrome API 每分钟推送一个通知。
我看到服务工作者的主要目标是缓存资源,但在每份文档中我都看到它们以某种方式 "always active",所以我觉得其中一个可用的事件侦听器应该做我想做的事情.
当您的 PWA 关闭时,每分钟 静默重启您注册的 Service Worker 是浏览器主动阻止的事情。在很多情况下,这将成为恶意行为的载体。
话虽这么说,但有两种选择可以不静默地或不频繁地启动注册的 Service Worker。
推送通知
在 "not silently" 方面,您可以使用 push notifications 根据从推送通知服务器发送的传入消息启动您的服务工作者。用户需要先选择接收推送通知。您需要在 Service Worker 的 push
事件处理程序中显示用户可见的通知,因此此方法不是 "silent."
您需要通过远程服务器触发这些 push
事件。您不能通过来自本地设备的 push
事件 "wake up" 服务人员。
定期后台同步
Periodic background sync 是一个较新的功能,更接近您描述的内容。它允许满足特定条件的网络应用程序注册一个 periodicsync
事件,该事件将定期自动触发(无需删除服务器)。您不需要在此 periodicsync
事件处理程序中显示用户可见的通知。
适用于定期后台同步的具体限制取决于浏览器,但至少在 Chrome 中,您无法注册 periodicsync
在任何地方触发的事件几乎与一次触发的频率一样一分钟。如果其他条件都满足,一天一件事的发生频率与您预期的差不多。