Я делаю это для одного из моих приложений, и способ, которым я его реализовал, - это использование веб-сервера Ruby & Sinatra для связи с базой данных MongoDB.Вы можете использовать любую другую базу данных и технологию веб-сервера.
Основная концепция такова:
- Каждый раз, когда объект в базе данных обновляется, для этого объекта записывается метка времени.
- Глобальная, последняя обновленная отметка времени также обновляется.
- Приложение связывается с веб-сервером и запрашивает обновления, передавая локально сохраненную «последнюю обновленную» отметку времени.
- Веб-серверобрабатывает запрос, сначала проверив глобальную временную метку и убедившись, что она старше, чем временная метка приложения.(Это избавляет от необходимости просматривать базу данных, если в нее не было внесено никаких изменений. Моя модель: большие данные, которые не изменяются часто. Если у вас есть данные, которые часто изменяются, эта глобальная временная метка, вероятно, не принесет пользы.)
- Затем веб-сервер находит все объекты в базе данных, чья временная метка новее, чем временная метка приложения.
- Веб-сервер упаковывает это в объект JSON и возвращает его приложению.
Это все RESTful в том смысле, что это транзакция без сохранения состояния, поэтому реализация приложения очень проста (простой NSURLRequest, за которым следует JSON-декодирование, а затем обработка ошибок).Теперь у вас есть массив обновленных объектов, и вы можете объединить их с вашим локальным хранилищем в приложении.
Еще один приятный момент, связанный с этим (без сохранения состояния) подходом, заключается в том, что вы можете запустить его на Heroku (бесплатно).