У меня есть Базовое приложение Данных, которое закончит тем, что было повсеместным применением iPhone/iPad.
Я хотел бы реализовать облачную синхронизацию так, чтобы iPhone и iPad оба запущения приложения могли обменяться данными. Я планирую использовать недавно выпущенный Dropbox API. У кого-либо есть какие-либо мысли о лучшем способе пойти о выполнении этого? API Dropbox позволяет, чтобы приложения хранили файлы на облаке. То, что я думал, было к исходному хранилищу базой данных (sqlite) для приложения на облаке, и затем загрузите ту базу данных, но я затем понял, что использование того метода сделает крайне трудным объединить изменения (вместо того, чтобы заменить целую базу данных).
Любые мысли ценятся.Спасибо.
Если вам это удастся, самый простой способ выполнить синхронизацию (безусловно) - иметь три копий ваших данных локально: копию, которую вы загрузили последней ("старая "), копия, созданная локальными изменениями (" моя "), и копия , теперь загруженная с сервера (" их ").
Затем отсортируйте все записи во всех трех файлах и просмотрите их одну за другой:
Обратите внимание, что «мой», «их» или «старый» может не существовать. Приведенные выше правила все еще применяются в этом случае; Если вы выбрали результат «не существует», вы захотите удалить запись в выходном файле.
Наконец, загрузите полученный файл обратно на сервер, чтобы он стал «их» базой данных для следующего парня. Затем скопируйте новый файл в свои локальные «старую» и «мою» базы данных.
(Есть более эффективные алгоритмы, чем приведенные выше ... но нет более простых :) А дисковое пространство в настоящее время довольно дешево, особенно если вы сжимаете файлы.)
Вы можете заглянуть в GameKit , чтобы поделиться данными. В противном случае кажется, что вам просто нужно управлять синхронизацией с промежуточным файловым сервером.
Возможно, вы захотите использовать другой метод для синхронизации. Каков тип данных, с которыми вы будете иметь дело?
Я добился большого успеха, используя легкий бэкэнд на рельсах.
Возможно, вы захотите экспортировать данные в какой-либо формат, отличный от собственного формата sqlite. Если бы я проектировал что-то подобное, я думаю, что JSON , вероятно, был бы моим предпочтительным форматом.
Я не изучал API Dropbox, но они поддерживают загрузку и загрузку файлов различий, а не всего файла, верно? В зависимости от того, как работает API, возможно, ваше приложение понимает их формат "diff" и работать с ним будет проще ...