【问题标题】:How to trigger offline background function when my PWA is closed我的 PWA 关闭时如何触发离线后台功能
【发布时间】:2020-04-02 08:42:55
【问题描述】:

基于此答案: Using setInterval in Service worker三年前,

我想知道是否有任何方法可以使 PWA(通过或不通过 service worker)触发一些基于时间而不是网络相关的后台功能。

我想在我的 PWA 关闭时每分钟使用内置通知 Chrome API 的导航器推送一个通知。

我看到服务工作者的主要目标是缓存资源,但在每个文档中我都看到它们以某种方式“始终处于活动状态”,所以我觉得其中一个可用的事件监听器应该做我想做的事情。

【问题讨论】:

    标签: service-worker progressive-web-apps


    【解决方案1】:

    在您的 PWA 关闭时,每分钟静默重启您注册的 Service Worker,这是浏览器主动阻止的。在很多情况下,这将成为恶意行为的载体。

    话虽如此,有两个选项可用于启动您的注册 Service Worker,不是静默启动,就是不那么频繁。

    推送通知

    在“非静默”方面,您可以使用push notifications 根据从推送通知服务器发送的传入消息启动您的服务工作者。用户需要先选择接收推送通知。您需要在 Service Worker 的 push 事件处理程序中显示用户可见的通知,因此此方法不是“静默”的。

    您需要通过远程服务器触发这些push 事件。您不能通过来自本地设备的 push 事件“唤醒”服务人员。

    定期后台同步

    Periodic background sync 是一个更新的功能,更接近您的描述。它允许满足特定条件的 Web 应用程序注册 periodicsync 事件,该事件将定期自动触发(无需删除服务器)。您无需在此 periodicsync 事件处理程序中显示用户可见的通知。

    适用于定期后台同步的具体限制取决于浏览器,但至少在 Chrome 中,您无法注册在任何地方几乎每分钟一次触发的periodicsync 事件。如果满足其他条件,一天的事件发生的频率与您预期的一样多。

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-22
      • 2019-04-25
      • 1970-01-01
      • 2015-12-02
      • 2015-08-01
      相关资源
      最近更新 更多