IOSWKWebViewではオフラインアプリケーションキャッシュがサポートされていないことを認識しています。
これはSafariで有効になっているので、Webkitプロジェクトで責任のあるコードを検索し、これを見つけました
WKPreferences
- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;
この方法に精通している人はいますか?このプライベートメソッドにアクセスして、iOSでアプリキャッシュを有効にすることは可能ですか? (アプリをAppstoreに発送するつもりはありません)
はい、プライベートAPIにアクセスしてアプリのキャッシュを有効にできます
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以降、AppCacheはWKWebView
でサポートされるようになりました。
https://Twitter.com/andersca/status/743259582252879872
...このWebKitバグレポートと同様に:
https://bugs.webkit.org/show_bug.cgi?id=15249
私はこのサイトを使用してWKWebView
でこれをテストしました:
http://webdbg.com/test/appcache/
iOSシミュレーターとiOS10を実行しているデバイスの両方で期待どおりに機能することを確認できます。