Phonegap (1.4.1) Хранилище больше не работает с iOS 5.1 - PullRequest
2 голосов
/ 12 марта 2012

Я разработал приложение для Android и iOS, используя PhoneGap. Оба приложения уже успешно запущены и доступны в магазинах. Теперь я добавил некоторые изменения для обновления. Если у меня есть данные, хранящиеся (с использованием базы данных SQLite) в предыдущей версии и обновляющиеся до новой, Storage Api на IOs 5.1 больше не работает.

Если я позвоню

 var db = window.openDatabase("mydb", "1.0", "", 5000000);

ничего не происходит.

Работает нормально для Android, также работает, если я делаю новую установку или если у меня нет данных, уже сохраненных в базе данных из предыдущей версии моего приложения. Я использую другие функции PhoneGap, такие как Notification или localStorage, которые работают отлично.

Любая помощь будет высоко ценится, так как у меня действительно заканчиваются идеи:)

Ответы [ 3 ]

2 голосов
/ 02 апреля 2012

Существует исправление для обеих проблем с хранилищем Webkit и iOS 5.1

  1. Хранилище перемещено из / Webkit в / Cache
  2. Хранилище не настроено на обновленную структуру папок в приложенииобновление под iOS 5.1 (ошибка WebKit)

https://issues.apache.org/jira/browse/CB-330

Это решение кажется более безопасным, чем просто изменение местоположения данных Webkit, вызывающих частный API.Во время работы приложения используются хранилища Webkit.При возобновлении или прекращении все данные копируются в папку документов.Метки времени гарантируют, что старая резервная копия не сможет перезаписать более новые данные хранилища (если приложение выйдет из строя ...).

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

1 голос
/ 13 марта 2012

Странно, должно работать ... Кстати, в iOS5.1 WebSQL считается временными данными, которые можно удалить в любой момент ...

Можно изменить расположение данных WebKit, вызвав закрытый API. Вы должны быть в состоянии установить местоположение для безопасной папки, такой как Документы. Я еще не тестировал это решение, но посмотрите на этот пост: /2790024/kak-vklychit-lokalnoe-hranilische-v-prilozhenii-na-baze-webkit

Я думаю, что более безопасный способ - использовать SQLite (такой же, как WebSQL) с плагином phonegap. Этот плагин сохраняет базу данных в папке «Документ», это означает, что БД не удаляется и сохраняется в iCloud.

Вот плагин Native SQLite для телефонной связи: https://github.com/davibe/Phonegap-SQLitePlugin Что касается этого плагина, есть некоторые различия между API WebSQL, вот адаптер: https://gist.github.com/2009518

Вам также следует перенести старый файл базы данных WebSQL (хранящийся в каталоге Library / WebKit или Caches) в папку Document. Вот код для этого: https://gist.github.com/2009491

В последней версии Cordova также реализовано исправление: https://issues.apache.org/jira/browse/CB-330 (резервное копирование файлов БД в папке «Документ»)

И если данные важны, вы должны сохранить их на сервере. Я написал небольшую библиотеку для синхронизации SQlite DB с сервером: https://github.com/orbitaloop/WebSqlSync

0 голосов
/ 20 марта 2012
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...