Приложение Phonegap — localStorage на iOS (требуется уточнение)

Я создаю гибридное приложение, используя PhoneGap. Он должен работать на iOS. Я немного смущен и надеюсь, что кто-то может помочь.

Я использую localStorage с моей навигацией. В моем приложении есть разные главы, и я повторно использую пользовательский интерфейс.

<a href="chapter.html" data-ajax="false" onClick="localStorage.setItem('chapter', '1')" class="ui-btn">Chapter 1</a>

Когда вы нажимаете на URL-адрес, он получает главу из localStorage и знает, какой контент нужно получить.

var chapter = localStorage.getItem('chapter');

Мои требования
localStorage должен быть постоянным только до тех пор, пока пользователь использует приложение.
Это нормально, если localStorage теряется при закрытии приложения.

Но когда он использует приложение, у него должен быть доступ к localStorage. Чтобы получить правильный контент, вам нужен номер главы, который вы получаете из localStorage.

Что меня смущает.
Об этом говорится на сайте Cordava.
iOS хранит данные localStorage в месте, которое может быть очищено операционной системой, когда потребуется место.

Мой вопрос
Возможно ли это, когда пользователь все еще использует приложение? Я не хочу, чтобы он переходил на новую страницу и получал неверные данные из-за потери localStorage.

Было бы лучше использовать вместо этого sessionStorage?

Все, что я действительно хочу сделать, это отправить номер главы на новую страницу, чтобы я мог получить правильный контент. (отправить информацию на новую страницу)

Является ли использование localStorage и sessionStorage правильным способом сделать это?

Если есть лучший способ, пожалуйста, дайте мне знать.

Заранее спасибо.


person Charm Geld    schedule 28.06.2017    source источник


Ответы (2)


Вы можете использовать cordova-plugin-nativestorage. (ссылка на npm)

На странице хранилища, которую вы указали, они указан для использования других подключаемых модулей, поскольку LocalStorage является непостоянным. Также ни один из других упомянутых там методов, таких как WebSQL, IndexedDB< /a> соответствует вашим требованиям.

Этот плагин использует SharedPreferences в Android и NSUserDefaults в iOS. Таким образом, значения сохраненных переменных сохраняются до тех пор, пока приложение не будет удалено. :)

Именно поэтому разработчики утверждают, что этот плагин был разработан. Ознакомьтесь с причинами здесь.

Также см. когда использовать и когда не использовать плагин.

person pro_cheats    schedule 28.06.2017

На данный момент (март 2019 г.) cordova-plugin-nativestorage не обновлялся 8 месяцев, поэтому в итоге я выбрал cordova-sqlite-storage. Это еще один надежный кроссплатформенный вариант и в настоящее время наиболее активный.

Чтобы ответить на ваш вопрос о возникновении, я полагаю, что это могло произойти, когда пользователь использует приложение, поскольку iOS очищает данные независимо от какого-либо поведения пользователя, но я пока не смог это подтвердить.

Возможно, я наткнулся на способ запретить iOS очищать локальное хранилище в нижней части этот пост. Не уверен, что мне было бы удобно полагаться на эту функцию для постоянства данных, все еще пытаясь отследить это, комментарии очень приветствуются.

person Jacob M.    schedule 27.03.2019