Safari iOS 11.3 未添加到工作框背景同步



我遵循了有关服务工作者和后台同步的教程: https://codelabs.developers.google.com/codelabs/workbox-indexeddb/index.html?index=..%2F..%2Findex#0

在 Safari iOS 11.3.1 上运行时,服务工作线程已注册,因为它在日志中报告(已安装服务工作线程(。但我不明白耶!工作框已加载🎉消息。

IndexedDB 工作正常,对象在服务器上的每个fetch上都会更新。

但是,当我故意脱机并执行 POST 时,不会将任何内容写入 IndexedDB 队列。我的问题是: 1. 我可以在哪里检查网页检查器中的服务工作者? 2. 工作框后台同步是否支持 Safari iOS 11.3.1?如果是,我的设置有什么问题?

您的服务工作线程有错误,因此 Workbox 未加载。在示例中,您必须添加正则表达式:

替换服务辅助角色上的以下内容:

workbox.routing.registerRoute(
/api/add,
networkWithBackgroundSync,
'POST'
);

使用这个:

const bgSyncPlugin = new workbox.backgroundSync.Plugin('offlineQueue', {
maxRetentionTime: 48 * 60 // 48 hours retention on Indexed DB (up to your needs)
});
workbox.routing.registerRoute(
new RegExp('./api/add'),
workbox.strategies.networkOnly({
plugins: [bgSyncPlugin]
}),
'POST'
);

在 Safari 11.3.1 上,您只能对请求进行电子排队,但尚不支持完整的后台支持。 检查:https://github.com/GoogleChrome/workbox/issues/1466

iOS上的 Safari 不支持后台同步

最新更新