Как синхронизировать данные приложения между iPhone и другим компьютером?
Я работаю над iPhone-приложением, которое позволит просматривать и редактировать данные, которые я хочу синхронизировать с настольным приложением. Я ничего не вижу в SDK, который напрямую обращается к синхронизации данных, и я не могу найти ничего, что позволило бы мне "подключиться" к процессу синхронизации iTunes.
Я мог бы сделать что-то kludgy, как скрытие данных в записи фотографии или адресной книги, но это просто кажется плохой идеей. Я могу использовать WebDAV или HTTP для получения/размещения данных на сервере, но это усложняет приложение.
Я предполагаю, что я ожидал, что это будет распространенный случай использования приложений iPhone (синхронизация произвольных данных приложений между настольным компьютером и iPhone) и что в SDK будет установлен набор API-интерфейсов. Может быть, есть, и я просто не могу его найти.
Ответы
Ответ 1
Два популярных метода:
Синхронизировать с настольным приложением напрямую через WiFi (используя Bonjour и т.д., чтобы найти конечные точки iPhone/настольного приложения, как это предлагали другие).
Другой вариант - синхронизация с общим расположением файлов - FTP, MobileMe, WebDAV, веб-сервисами на другом сервере и т.д. Таким образом, iPhone и настольное приложение будет читать/записывать в общую папку, чтобы другой мог видеть обновления.
Как уже говорили другие, на данный момент не существует метода Apple (с использованием iTunes или иначе), и нет никаких указаний на то, что что-то в этом направлении произойдет в ближайшем будущем, если оно не связано с будущей поддержкой iPhone для сторонних разработчиков нажмите обновления. (Я действительно сомневаюсь, что это будет так, но вы никогда не знаете.)
Ответ 2
Посмотрите:
http://sourceforge.net/projects/syncdocs/
Ответ 3
Я сам этого не пробовал, но я думаю, Bonjour предоставляет возможность подключения к сервисам на других машинах, вы можете найти некоторые ответы на них смотрят
Ответ 4
Это обычная проблема, но, к сожалению, не обращается к SDK.
Так как iPhone поддерживает публикацию и обнаружение сервисов Bonjour, вы можете легко публиковать сервис на телефоне и слушать его на рабочем столе, подключая, когда они находят друг друга. (Или вы можете опубликовать эту услугу на рабочем столе и подключиться с телефона, в любом случае это не имеет значения.) Вся документация по Bonjour для Mac OS OS X относится к iPhone OS.
Обратите внимание, что Bonjour просто рекламирует услугу; как только вы его найдете, вам все равно придется использовать сокеты для подключения и передачи данных.
В принципе, нет простого способа сделать это, но есть достаточно доступных инструментов, благодаря которым вы можете сделать синхронизацию безболезненной для пользователя.
Ответ 5
Пример для Bonjour Sync:
http://cocoa-nut.de/?p=27
Ответ 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 предоставляет крючки для процесса синхронизации. (/личное мнение)