Как остановить удаление базы данных HTML 5 при использовании Phonegap и iOS 5.1 - PullRequest
5 голосов
/ 12 марта 2012

Я создаю приложение в стиле викторины для iOS, используя phonegap.Приложение позволяет пользователям создавать, а затем принимать участие в опросах.

В настоящее время я использую базу данных HTML 5 с помощью API-интерфейса phonegap для хранения данных испытаний и результатов.Я обеспокоен тем, что теперь база данных может быть удалена с помощью iOS 5.1, когда память устройства заполнится.

Есть ли способ пометить папку кэша webkit, где хранится база данных, чтобы она никогда не удалялась?Если это невозможно, есть ли какие-либо предложения относительно другого способа хранения данных, который всегда будет постоянным.

Ответы [ 3 ]

7 голосов
/ 13 марта 2012

Да, жаль, что Apple сделала это в iOS5.1

Можно изменить расположение данных WebKit, вызвав закрытый API. Вы должны быть в состоянии установить местоположение для безопасной папки, такой как Документы. Я еще не тестировал это решение, но посмотрите на этот пост: Как включить локальное хранилище в приложении на базе WebKit?

Команда Phonegap также работает над этой проблемой: https://issues.apache.org/jira/browse/CB-330

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

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

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

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

1 голос
/ 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. Вот почему не стоит ждать ...

0 голосов
/ 12 марта 2012

Вместо использования базы данных html5 я бы отправлял / получал данные через ajax (на удаленный сервер, с php и mysql), предпочтительно зашифрованный (и base64_encoded).

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