cordova-background-fetch在iOS应用关闭状态下是否能正常运行?
Service Worker
fetch 事件触发场景解答 核心结论
fetch事件没有全场景下应用被杀死后仍可触发的能力,仅在应用进程未被系统回收的后台状态,以及部分平台应用关闭后的极短存活窗口期内可以触发。
分场景详细说明
- 应用处于后台状态:只要系统未主动回收应用对应的Service Worker进程,
fetch事件就可以正常触发,这属于W3C标准规定的常规可触发场景。 - 应用被主动杀死/完全关闭状态:
- 桌面端Chrome、Edge等主流浏览器:如果用户未手动禁用PWA的后台运行权限,应用关闭后Service Worker会保留最长5分钟的存活期,这段时间内
fetch事件可被触发;到期后进程被回收,事件无法触发。 - 移动端原生安卓系统:应用被杀死后Service Worker最多保留10分钟存活期,到期后无法触发事件;国产定制安卓ROM通常会在应用被划走杀死时立刻回收所有关联进程,不存在存活窗口期,
fetch事件完全无法触发。 - 移动端iOS系统:只要应用被用户手动杀死,系统会立刻终止所有关联的Service Worker进程,
fetch事件100%无法触发。
- 桌面端Chrome、Edge等主流浏览器:如果用户未手动禁用PWA的后台运行权限,应用关闭后Service Worker会保留最长5分钟的存活期,这段时间内
补充说明
以上规则仅适用于W3C标准定义的Service Worker
fetch事件,如果你使用的是特定框架/插件自定义的fetch事件,触发逻辑以插件底层进程调度实现为准。
内容的提问来源于stack exchange,提问作者Nirmal Kumar
相关产品推荐
相关产品推荐

