在WKWebView中启用应用程序缓存

我知道iOS WKWebView不支持脱机应用程序缓存。

这在Safari中启用,因此我在webkit项目中搜索了负责的代码并找到了这个

WKPreferences

- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled; 

有人熟悉这种方法吗? 是否可以通过访问此私有方法在iOS中启用应用程序缓存? (我不打算将应用程序发送到Appstore)

是的,我们可以通过访问私有API来启用App缓存

WKPreferences创建一个类别,并添加到以下方法签名。

 @interface WKPreferences (MyPreferences) - (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled; @end 

(我尝试了performSelector:withObject:但它没有用。不知道为什么)

初始化WKWebView后,通过调用以下对象中的上述方法启用appcache

  [_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES]; 

它将在Cache目录中创建ApplicationCache.db文件,并允许Web应用程序脱机工作。

警告 :

2.5。 使用非公共API的应用将被拒绝

根据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的设备上都按预期工作。