2016年2月26日金曜日

【Ionic(Cordova)】Telerik版WKWebViewのpluginでLocal Storageにデータを保存できるようにするには?

Ionic(Cordova)でWKWebViewを使う時にハマるのがLocal Storageの扱い。アプリを起動するたびにLocal Storageに保存したデータがリセットされるという問題だ。

公式のApache版 はこのように解決できる。

iPhoneアプリ開発メモ: WKWebViewでの環境構築がついに発表される

iPhoneアプリ開発メモ: RPGツクールMVでiPhoenアプリビルド最新のcordovaでWKWebViewを使うセッティング

著者の方に感謝!


Telerik版 は独自に解決した。Apache版が使えるようになった今となっては二度と使わない解決法だろうが、念の為に残しておこうと思う。

ポイントはドキュメントにあるここだ。

0.5.1 Added support for config.xml property DisableLocalStorageSyncWithUIWebView (default false). Set it to true if you want to switch back to UIWebView and retain LS changes made while running WKWebView.

つまり、デフォルトではUIWebViewのLSとWKWebViewのLSを同期するようになっていて、起動のたびにWKWebViewのLSが空のUIWebViewのLSで上書きされることが問題と考えられる。

この機能をOFFにするには (プロジェクト名)/config.xml に

<preference name="DisableLocalStorageSyncWithUIWebView" value="true" />

と書く必要がある。もちろん保存した後、ionic prepare iosして設定を反映させる必要がある。

これで保存できるようになった。