投稿

2月, 2016の投稿を表示しています

【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して設定を反映させる必要がある。 これで保存できるようになった。

AmazonのAppStoreで位置情報を使うアプリの対応端末を増やす方法

イメージ
最近AmazonのAppStoreはパーミッションに関する制約が厳しくなり、これまで何も言われなかったアプリが警告扱いになり、ついに非対応ということになってしまった。 問題のアプリは位置情報を扱うアプリなのだが、Amazonの端末はGPSを搭載している端末が少ないので、このままでは対応端末が非常に限られてしまう。 改善すべきはAndroidManifest.xmlに設定しているパーミッションの指定。現在、位置情報関連のパーミッションは次の2つ。 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> アプリの性質上、GPSほどの高い精度の位置情報は必要無いので、初めはACCESS_FINE_LOCATIONを消してみた。これでGPSを使わないようになるのではと考えたからだ。 これで対応端末は増えたが、ACCESS_COARSE_LOCATIONだけではキロ単位のズレが発生してしまうことが分かった。これはさすがにまずい^^; エラーの内容をよく見ると、「android.hardware.location.gps」がダメだと言っている。 ということは、「GPSは必須でない」という設定があるはず。ドキュメントを見ると <uses-feature> | Android Developers 「android.hardware.location.gps」というプロパティーがあった。そこで、このように指定することにした。 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <