web-dev-qa-db-ja.com

iOS 7WebビューとlocalStorageの永続性

PhoneGap/Cordovaを使用してハイブリッドアプリ(iOSおよびAndroidのみ)用)を開発しており、HTML5localStorageを使用してオフラインアクセス用のコンテンツを保存したいと考えています。

http://caniuse.com/#search=localStorage は言う-「iOS5および6では、localStorageデータはOSによって時折クリアされる可能性のある場所に保存されます。」

  1. IOS 7(およびそれ以降)のWebビューの状況はどのようなものですか?どのような場合にlocalStorageが持続するか、(OSまたはユーザーによって)クリアされますか?

  2. アプリを更新するとlocalStorageがクリアされますか?

  3. ユーザーがSafariでブラウザの履歴をクリアするのはどうですか?それはWebビューにも当てはまりますか?

  4. FilsシステムのどこにlocalStorageが作成されるかを心配する必要がありますか(または制御することもできますか)。 iCloudにバックアップしてはいけないことを理解しています。


デバイス(iPad)を入手し、ファイルシステムを確認すると、localStorageファイルがアプリサンドボックス内の〜/ Library/Cachesにあることがわかります。下の画像を参照してください。

ドキュメントから:

https://developer.Apple.com/icloud/documentation/data-storage/index.html 再ダウンロードまたは再生成できるデータは、に保存する必要があります。/Library/Cachesディレクトリ。 Cachesディレクトリに配置する必要のあるファイルの例には、データベースのキャッシュファイルや、雑誌、新聞、地図のアプリケーションで使用されるようなダウンロード可能なコンテンツが含まれます。

私は単にデータを設定するためにこれを行っています:

  localStorage.setItem('foo','this is the FOO value');
  localStorage.setItem('bar','and this is the BAR value');

enter image description here

15
KevInSol

コルドバを使用している場合、その問題はiOS5およびiOS6でもかなり前に修正されています。最新バージョンのコルドバを使用していても、心配する必要はありません。

1
jcesarmobile

それでもCordova-iOSv4で問題が発生する場合は、NativeStorageプラグインを試してください。 https://www.npmjs.com/package/cordova-plugin-nativestorage

Android共有設定やiOSNSUserDefaultsなどのプラットフォーム機能を実装する関数を設定、配置、取得して、データストアを可能な限り安全にします。

cordova plugin add cordova-plugin-nativestorage

NativeStorage.putObject("reference_to_value",<object>, <success-callback>, <error-callback>);

NativeStorage.getObject("reference_to_value",<success-callback>, <error-callback>);
4
user4466709

最善の策は、NativeStorageプラグインを使用することです。

https://www.npmjs.com/package/cordova-plugin-nativestorage

あなたの質問に答えるには:

  1. localStorageデータはファイルシステムのキャッシュディレクトリに保持され、キャッシュはOSによって頻繁にクリーンアップされます(たとえば、デバイスのディスク容量が少ない場合)。
  2. いいえ、アプリを更新してもローカルストレージはクリアされません。
  3. いいえ、SafariローカルストレージとWebviewローカルストレージは別々です。
  4. いいえ、ファイルシステムのどこに保存するかを制御することはできません。
1
sandstrom