IOS 7 webview и постоянство локального хранилища

Я разрабатываю гибридное приложение (только для iOS и Android) с помощью PhoneGap/Cordova и хочу использовать HTML5 localStorage для хранения контента для автономного доступа.

http://caniuse.com/#search=localStorage говорит - "В iOS 5 и 6 данные локального хранилища хранятся в местоположении, которое иногда может быть очищено ОС."

  • Какова ситуация с веб-просмотром iOS 7 (и более поздним), в каких случаях локальная хранилище сохраняется или очищается (операционной системой или пользователем)?

  • Будет ли обновление для приложения очищено localStorage?

  • Как насчет того, чтобы пользователь очистил историю браузера Safari - это тоже относится к веб-просмотру?

  • Мне нужно беспокоиться (или я могу даже контролировать), где в системе 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

Ответы

Ответ 1

Если вы используете кордову, эта проблема была исправлена ​​давно, даже для iOS 5 и iOS 6. Не стоит беспокоиться, используете ли вы последнюю версию кордовы.

Ответ 2

Если вы все еще сталкиваетесь с проблемой с Cordova-iOS v4, попробуйте плагин NativeStorage. https://www.npmjs.com/package/cordova-plugin-nativestorage.

Он установил, поставил и получил функции, реализующие возможности платформы, такие как общие настройки android и iOS NSUserDefaults, которые делают хранение данных максимально безопасным.

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>);

Ответ 3

Как уже упоминалось, я считаю, что лучше всего использовать плагин NativeStorage:

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

Чтобы ответить на ваши вопросы:

  • Данные localStorage хранятся в каталоге кэша в файловой системе, а кеш часто очищается ОС (например, когда устройство находится на низком диске).
  • Нет, не автоматически (но, возможно, из-за причин в 1, выше).
  • Нет, они разделены.
  • Нет, не то, о чем я знаю, к сожалению.