Ответ 1
Если вы хотите сделать это сами, это может быть очень приятным, но сложным упражнением. Я не знаю каких-либо сторонних структур, которые облегчают подключение P2P между "iDevices", кроме тех, что указаны ниже, от Apple. Вы можете провести некоторое исследование по этим направлениям, если не хотите изобретать колесо. Я отвечаю на основании моего (небольшого) опыта внедрения службы синхронизации через сервер приложений - принципы должны быть более или менее одинаковыми с подходом P2P.
Первым шагом будет разработка протокола для синхронизации ваших данных. Вопросы, которые вам, возможно, придется ответить сами:
- Что мне нужно знать о синхронизации данных?
- Какую часть моей базовой модели данных я хочу синхронизировать? Должен ли я вносить изменения в свою текущую модель для упрощения синхронизации?
- Какой механизм сериализации/десериализации я буду использовать?
- Как я могу однозначно идентифицировать объекты на нескольких устройствах?
- Как мне изменить мои данные? Как я могу определить, какие объекты необходимо синхронизировать?
- Нужно ли мне возвращать операцию синхронизации?
- Как я буду отслеживать прогресс синхронизации и как я буду обрабатывать ошибки и случаи исключения? Как я могу уведомить пользователя об этом?
- Предпочитаю ли я синхронизировать "поэтапно" (части моей модели) или "глобально" (вся модель сразу)?
- Как часто пользователь должен синхронизировать между устройствами?
- Есть ли какие-либо соображения безопасности? Нужно ли шифрование?
- и др.
Это едва царапает поверхность. Вы обязательно найдете больше вещей, о которых стоит подумать, двигаясь вперед.
Далее определите, как вы хотите подключиться между устройствами. Кажется, вы предпочитаете решение, основанное на воздухе, P2P. Для этого я бы начал с рассмотрения этих инструментов:
- GameKit (в этой структуре есть API-интерфейсы для установления соединения между устройствами через Bluetooth).
- Bonjour (протокол Apple для обнаружения устройств по сети - см. пример приложения BonjourWeb) + сокеты BSD
Выберите подходящий инструмент (ы), с которым вы чувствуете себя наиболее комфортно, и на основе ваших проектных решений, обсуждавшихся ранее. Я не могу вам помочь, так как у меня нет опыта с ними. Как сказал Морфеус:
Я могу только показать вам дверь. Вы тот, который должен пройти через него.
Извините, немного юмора:)
Наконец, решите решение реализовать свой механизм синхронизации. Вы можете, например, выберите модель клиент-сервер (одно устройство будет прослушивать соединение, а другое - инициировать его).
Более релевантная документация:
Надеюсь, это даст вам исходный путь.