Облачная синхронизация между iPad/приложением для iPhone

У меня есть Базовое приложение Данных, которое закончит тем, что было повсеместным применением iPhone/iPad.

Я хотел бы реализовать облачную синхронизацию так, чтобы iPhone и iPad оба запущения приложения могли обменяться данными. Я планирую использовать недавно выпущенный Dropbox API. У кого-либо есть какие-либо мысли о лучшем способе пойти о выполнении этого? API Dropbox позволяет, чтобы приложения хранили файлы на облаке. То, что я думал, было к исходному хранилищу базой данных (sqlite) для приложения на облаке, и затем загрузите ту базу данных, но я затем понял, что использование того метода сделает крайне трудным объединить изменения (вместо того, чтобы заменить целую базу данных).

Любые мысли ценятся.Спасибо.

7
задан indragie 2 June 2010 в 23:30
поделиться

4 ответа

Если вам это удастся, самый простой способ выполнить синхронизацию (безусловно) - иметь три копий ваших данных локально: копию, которую вы загрузили последней ("старая "), копия, созданная локальными изменениями (" моя "), и копия , теперь загруженная с сервера (" их ").

Затем отсортируйте все записи во всех трех файлах и просмотрите их одну за другой:

  • если старые == мои, используйте их
  • иначе, если старые == их, используйте мои
  • иначе у вас есть конфликт; сделайте что-нибудь с этим (например, всегда используйте мой, он же «побеждает последний писатель»)

Обратите внимание, что «мой», «их» или «старый» может не существовать. Приведенные выше правила все еще применяются в этом случае; Если вы выбрали результат «не существует», вы захотите удалить запись в выходном файле.

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

(Есть более эффективные алгоритмы, чем приведенные выше ... но нет более простых :) А дисковое пространство в настоящее время довольно дешево, особенно если вы сжимаете файлы.)

5
ответ дан 7 December 2019 в 09:57
поделиться

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

0
ответ дан 7 December 2019 в 09:57
поделиться

Возможно, вы захотите использовать другой метод для синхронизации. Каков тип данных, с которыми вы будете иметь дело?

Я добился большого успеха, используя легкий бэкэнд на рельсах.

1
ответ дан 7 December 2019 в 09:57
поделиться

Возможно, вы захотите экспортировать данные в какой-либо формат, отличный от собственного формата sqlite. Если бы я проектировал что-то подобное, я думаю, что JSON , вероятно, был бы моим предпочтительным форматом.

Я не изучал API Dropbox, но они поддерживают загрузку и загрузку файлов различий, а не всего файла, верно? В зависимости от того, как работает API, возможно, ваше приложение понимает их формат "diff" и работать с ним будет проще ...

0
ответ дан 7 December 2019 в 09:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: