Подтвердить что ты не робот

Какое хорошее решение для синхронизации данных между приложениями iOS?

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

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

Update

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

Обновление 2

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

Более релевантная документация:

Надеюсь, это даст вам исходный путь.

Ответ 2

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

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

Ответ 3

"Couchbase for 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 технологии.     Если вы < 3 CouchApps, вы можете развернуть их как приложения iOS.

Ответ 4

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