Как синхронизировать данные приложения между iPhone и другим компьютером?

Я работаю над iPhone-приложением, которое позволит просматривать и редактировать данные, которые я хочу синхронизировать с настольным приложением. Я ничего не вижу в SDK, который напрямую обращается к синхронизации данных, и я не могу найти ничего, что позволило бы мне "подключиться" к процессу синхронизации iTunes.

Я мог бы сделать что-то kludgy, как скрытие данных в записи фотографии или адресной книги, но это просто кажется плохой идеей. Я могу использовать WebDAV или HTTP для получения/размещения данных на сервере, но это усложняет приложение.

Я предполагаю, что я ожидал, что это будет распространенный случай использования приложений iPhone (синхронизация произвольных данных приложений между настольным компьютером и iPhone) и что в SDK будет установлен набор API-интерфейсов. Может быть, есть, и я просто не могу его найти.

Ответы

Ответ 1

Два популярных метода:

Синхронизировать с настольным приложением напрямую через WiFi (используя Bonjour и т.д., чтобы найти конечные точки iPhone/настольного приложения, как это предлагали другие).

Другой вариант - синхронизация с общим расположением файлов - FTP, MobileMe, WebDAV, веб-сервисами на другом сервере и т.д. Таким образом, iPhone и настольное приложение будет читать/записывать в общую папку, чтобы другой мог видеть обновления.

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

Ответ 3

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

Ответ 4

Это обычная проблема, но, к сожалению, не обращается к SDK.

Так как iPhone поддерживает публикацию и обнаружение сервисов Bonjour, вы можете легко публиковать сервис на телефоне и слушать его на рабочем столе, подключая, когда они находят друг друга. (Или вы можете опубликовать эту услугу на рабочем столе и подключиться с телефона, в любом случае это не имеет значения.) Вся документация по Bonjour для Mac OS OS X относится к iPhone OS.

Обратите внимание, что Bonjour просто рекламирует услугу; как только вы его найдете, вам все равно придется использовать сокеты для подключения и передачи данных.

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

Ответ 6

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

Чтобы сделать это, вы должны установить ключ UIFileSharingEnabled в значение YES в вашем файле Info.plist приложения. Затем вы можете использовать стандартные API-интерфейсы IO для сохранения файлов в каталоге документов приложения.

Здесь больше информации: http://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/StandardBehaviors/StandardBehaviors.html#//apple_ref/doc/uid/TP40007072-CH4-SW6

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

Ответ 7

Я также работаю над приложением, которому нужно обмениваться данными, единственным разумным/неруким способом, который я нашел для получения информации в iPhone и из него, является NSURLConnection.

(личное мнение) Я не предвижу, что Apple предоставляет крючки для процесса синхронизации. (/личное мнение)