在 WKWebView 中启用应用程序缓存
Enable Application cache in WKWebView
我知道 iOS WKWebView 不支持离线应用程序缓存。
这是在 Safari 中启用的,所以我在 webkit 项目中搜索了负责的代码并找到了这个
WKPreferences
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
有人熟悉这个方法吗?是否可以通过访问此私有方法在 iOS 中启用应用程序缓存? (我不会将应用程序发送到 Appstore)
是的,我们可以通过访问private来启用App缓存API
为 WKPreferences
创建类别并添加到以下方法签名。
@interface WKPreferences (MyPreferences)
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
@end
(我试过performSelector:withObject:但是没用。不知道为什么)
初始化WKWebView后,在下面对象中调用上述方法开启appcache
[_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES];
它将在缓存目录中创建 ApplicationCache.db 文件并允许网络应用程序脱机工作。
警告:
2.5. Apps that use non-public APIs will be rejected
根据 Apple 的这条推文,从 iOS 10 开始,WKWebView
现在支持 App Cache:
https://twitter.com/andersca/status/743259582252879872
...这个 WebKit 错误报告也是如此:
https://bugs.webkit.org/show_bug.cgi?id=152490
我在 WKWebView
中使用这个网站测试过这个:
http://webdbg.com/test/appcache/
并且可以确认它在 iOS 模拟器和设备上都按预期工作 运行 iOS 10.
我知道 iOS WKWebView 不支持离线应用程序缓存。
这是在 Safari 中启用的,所以我在 webkit 项目中搜索了负责的代码并找到了这个
WKPreferences
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
有人熟悉这个方法吗?是否可以通过访问此私有方法在 iOS 中启用应用程序缓存? (我不会将应用程序发送到 Appstore)
是的,我们可以通过访问private来启用App缓存API
为 WKPreferences
创建类别并添加到以下方法签名。
@interface WKPreferences (MyPreferences)
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
@end
(我试过performSelector:withObject:但是没用。不知道为什么)
初始化WKWebView后,在下面对象中调用上述方法开启appcache
[_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES];
它将在缓存目录中创建 ApplicationCache.db 文件并允许网络应用程序脱机工作。
警告:
2.5. Apps that use non-public APIs will be rejected
根据 Apple 的这条推文,从 iOS 10 开始,WKWebView
现在支持 App Cache:
https://twitter.com/andersca/status/743259582252879872
...这个 WebKit 错误报告也是如此:
https://bugs.webkit.org/show_bug.cgi?id=152490
我在 WKWebView
中使用这个网站测试过这个:
http://webdbg.com/test/appcache/
并且可以确认它在 iOS 模拟器和设备上都按预期工作 运行 iOS 10.