Что такое хорошее решение для синхронизации данных между приложениями iOS? [закрытый]

Я разрабатываю приложение, управление данными которого осуществляется через основные данные, и я изучаю, как реализовать функцию синхронизации данных между двумя различными устройствами (даже между iDevices и Mac в конечном итоге).

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

обновление

Я начал награду за это вопрос. Синхронизация может быть сложной задачей на iOS, но давайте, есть много приложений, которые предлагают функциональные возможности синхронизации устройства к устройству. Мой вопрос: как они это делают? Каков наилучший подход? Каковы различные решения?

обновление 2

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

4 ответов


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

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

  • что мне нужно понять о синхронизация данных?
  • какую часть моей основной модели данных я хочу синхронизировать? Должен ли я внести изменения в мою текущую модель, чтобы облегчить синхронизацию?
  • какой механизм сериализации/десериализации использовать?
  • как я смогу однозначно идентифицировать объекты на нескольких устройствах?
  • как я буду версировать свои данные? Как определить, какие объекты нужно синхронизировать?
  • нужно ли мне иметь возможность отменить операцию синхронизации?
  • как я буду отслеживать ход синхронизации и как я буду обрабатывать сбои и случаи исключений? Как я сообщу об этом пользователю?
  • предпочитаю ли я синхронизировать " постепенно "(части моей модели) или" глобально " (вся модель сразу)?
  • как часто пользователь должен синхронизировать между устройствами?
  • есть ли какие-либо соображения безопасности? Мне нужно шифрование?
  • etc.

Это едва поцарапать поверхность. Вы определенно найдете больше вещей, чтобы думать о том, как вы двигаться вперед.

затем определите, как вы хотите соединить между устройствами. Вы, кажется, предпочитаете более-эфирное решение, вид P2P. Для этого я бы начал с просмотра этих инструменты:

  • GameKit (эта структура имеет API для установления соединения между устройствами через Bluetooth)
  • Bonjour (протокол Apple для обнаружения устройств по сети-см. пример приложения BonjourWeb) + разъемы BSD

выберите какой инструмент(ы) вы чувствуете себя наиболее комфортно с и на основе ваших дизайнерских решений, обсужденных ранее. Я не могу помочь вам там, а у меня нет никакого опыта с из них. Как сказал Морфей:--1-->

Я могу только показать тебе дверь. Ты тот, который должен пройти через это.

извините, немного юмора :)

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

более соответствующую документацию:

Я надеюсь, что это даст вам начальный путь.


синхронизация данных, как известно, сложно. Упрощенные решения хуже, чем отсутствие решения.

для хорошего духовного руководства по данному вопросу, пойти проверить, что авторы вещи делают с их предстоящей функцией синхронизации облака. Я надеюсь, что они выпустят API синхронизации, через который разработчики могут реализовать службы синхронизации. Но даже если они держат это в себе, они демонстрируют довольно хорошо вид душевного поиска, необходимого, чтобы действительно подняться к делу.


"Couchbase для iOS" может удовлетворить ваши потребности

https://github.com/couchbaselabs/iOS-Couchbase

согласно readme:

Mobile Couchbase for iOS

Apache CouchDB on iOS provides a simple way to sync your application

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

What this means for you:

You can embed the rock solid distributed database, Mobile

Couchbase, на вашем устройстве iOS. Ваши приложения iOS могут использовать проверенную синхронизацию Apache CouchDB технология. Если вы


Я бы начал с службы синхронизации API Apple и посмотреть, соответствует ли это вашим потребностям. В принципе, это позволит вам синхронизировать все устройства и сервисы Apple.