Синхронизация файлов между iPhone и сервером - PullRequest
3 голосов
/ 01 декабря 2011

Кто-нибудь может предложить лучший фреймворк, метод, библиотеку, которую я мог бы использовать в iPhone (использовать в разработке, а не готовое приложение), чтобы добиться синхронизации между файловым сервером и локальным хранилищем на iPhone?

Ответы [ 2 ]

2 голосов
/ 01 декабря 2011

Я делаю это для одного из моих приложений, и способ, которым я его реализовал, - это использование веб-сервера Ruby & Sinatra для связи с базой данных MongoDB.Вы можете использовать любую другую базу данных и технологию веб-сервера.

Основная концепция такова:

  1. Каждый раз, когда объект в базе данных обновляется, для этого объекта записывается метка времени.
  2. Глобальная, последняя обновленная отметка времени также обновляется.
  3. Приложение связывается с веб-сервером и запрашивает обновления, передавая локально сохраненную «последнюю обновленную» отметку времени.
  4. Веб-серверобрабатывает запрос, сначала проверив глобальную временную метку и убедившись, что она старше, чем временная метка приложения.(Это избавляет от необходимости просматривать базу данных, если в нее не было внесено никаких изменений. Моя модель: большие данные, которые не изменяются часто. Если у вас есть данные, которые часто изменяются, эта глобальная временная метка, вероятно, не принесет пользы.)
  5. Затем веб-сервер находит все объекты в базе данных, чья временная метка новее, чем временная метка приложения.
  6. Веб-сервер упаковывает это в объект JSON и возвращает его приложению.

Это все RESTful в том смысле, что это транзакция без сохранения состояния, поэтому реализация приложения очень проста (простой NSURLRequest, за которым следует JSON-декодирование, а затем обработка ошибок).Теперь у вас есть массив обновленных объектов, и вы можете объединить их с вашим локальным хранилищем в приложении.

Еще один приятный момент, связанный с этим (без сохранения состояния) подходом, заключается в том, что вы можете запустить его на Heroku (бесплатно).

1 голос
/ 01 декабря 2011

Из того, что я могу сказать, нет простого пути. Я искал rsync-эквивалент, но не нашел его.

В моем случае я вручную иду по дереву, запрашивая у сервера различия после определенной даты, и помню последнюю успешную дату синхронизации.

Не очень. Может потратить много времени на то, чтобы придумать что-нибудь сложное.

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