Enable Application cache in WKWebView

杀马特。学长 韩版系。学妹 提交于 2019-11-27 08:57:46

Yes, we can enable App cache by accessing private API

Create a category for WKPreferences and add to following method signature.

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

(I tried performSelector:withObject: but it didn't work. No idea why)

After initializing the WKWebView, enable the appcache by calling the above method in the following object

  [_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES];

It will create the ApplicationCache.db file in the Cache directory and allow the web app to work offline.

Warning :

2.5. Apps that use non-public APIs will be rejected

According to this tweet from at Apple, as of iOS 10, App Cache is now supported in WKWebView:

https://twitter.com/andersca/status/743259582252879872

...as does this WebKit bug report:

https://bugs.webkit.org/show_bug.cgi?id=152490

I've tested this in WKWebView using this site:

http://webdbg.com/test/appcache/

and can confirm it works as expected both in the iOS Simulator and on devices running iOS 10.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!