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

#iphone

Вопрос:

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

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

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

Ответ №1:

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

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

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

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

Ответ №2:

Взгляните на :

http://sourceforge.net/projects/syncdocs/

Комментарии:

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

Ответ №3:

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

Ответ №4:

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

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

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

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

Ответ №5:

Пример для синхронизации Bonjour: http://cocoa-nut.de/?p=27

Ответ №6:

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

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

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

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

Комментарии:

1. Да, и в iOS 5 также появится поддержка iCloud. Если ваши приложения вообще используют основные данные, будет относительно просто реализовать облачное хранилище, доступ к которому можно получить с помощью приложения для iPhone, настольного приложения или веб-приложения.

Ответ №7:

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

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