Enable Application cache in WKWebView

后端 未结 2 415
太阳男子
太阳男子 2020-11-30 07:52

I am aware that offline application cache is not supported in iOS WKWebView.

This is enabled in Safari, so I searched webkit project for the responsible code &

相关标签:
2条回答
  • 2020-11-30 08:41

    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

    0 讨论(0)
  • 2020-11-30 08:53

    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.

    0 讨论(0)
提交回复
热议问题