离线状态下是否可以在指定时间通知ServiceWorker?

Moo*_*ise 5 javascript service-worker push-api progressive-web-apps

比如说,我想在 Android 上制作一个闹钟应用程序作为渐进式网络应用程序。

就像本机警报应用程序一样,即使没有活动网页,它也应该在选定的时间收到通知。

一开始我考虑使用push api。当然,离线状态下推送消息是无法到达的。而且推送消息到达时间对于闹钟来说也不够准确。

即使没有网络也能及时收到通知吗?

Jef*_*ick 3

您所描述的是与定期后台同步(而不是推送通知)更紧密相关的功能,因为推送通知需要网络连接。定期后台同步具有独立于网络的优点。(定期后台同步目前只是一个提案,尚未在任何浏览器中实现。)

但是,不幸的是,对于您的用例来说,定期后台同步显然不是为需要在精确时间触发的事件而设计的,而这对于使闹钟有用来说是必需的。根据最初的提议:

周期性同步不是什么

定期同步并不是一个精确的警报 API。调度粒度以毫秒为单位,但根据使用频率和设备状态(电池、连接、位置),事件可能会延迟几个小时才触发。

同步运行的结果应该是“有益的”而不是“关键的”。如果您的用例很关键,一次性同步或推送 API 可能会满足您的要求。

现代移动操作系统中包含各种优化,以在设备被视为空闲时最大限度地减少功耗,包括交错批次运行定期任务,而不是对这些任务的运行时间进行细粒度控制。