Включить кэш приложений в WKWebView
Я знаю, что кэш автономного приложения не поддерживается в iOS WKWebView.
это включено в Safari, поэтому я искал проект webkit для ответственного кода и нашел это
WKPreferences
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
кто-нибудь знаком с этим методом? можно ли включить кэш приложений в iOS, обратившись к этим частным методам? (Я не собираюсь отправлять приложение в Appstore)
2 ответов
Да, мы можем включить кэш приложений, обратившись к частному API
создать Категорию для WKPreferences
и добавьте к следующей сигнатуре метода.
@interface WKPreferences (MyPreferences)
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
@end
(я попробовал performSelector: withObject: но это не сработало. Не знаю, почему)
после инициализации WKWebView включите appcache, вызвав вышеуказанный метод в следующем объекте
[_wkWebView.configuration.preferences _setOfflineApplicationCacheIsEnabled:YES];
он создаст ApplicationCache.db файл в каталоге кэша и Разрешить веб - приложение для работы в автономном режиме.
предупреждение :
2.5. Приложения, использующие непубличные API, будут отклонены
согласно этому твиту от Apple, начиная с iOS 10, кэш приложений теперь поддерживается в WKWebView
:
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.