web-dev-qa-db-ja.com

WKWebViewでアプリケーションキャッシュを有効にする

IOSWKWebViewではオフラインアプリケーションキャッシュがサポートされていないことを認識しています。

これはSafariで有効になっているので、Webkitプロジェクトで責任のあるコードを検索し、これを見つけました

WKPreferences

- (void)_setOfflineApplicationCacheIsEnabled:(BOOL)offlineApplicationCacheIsEnabled;

この方法に精通している人はいますか?このプライベートメソッドにアクセスして、iOSでアプリキャッシュを有効にすることは可能ですか? (アプリをAppstoreに発送するつもりはありません)

10
Clement Prem

はい、プライベート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を使用するアプリは拒否されます

8
Clement Prem

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を実行しているデバイスの両方で期待どおりに機能することを確認できます。

2
Andrew Ebling