передача файла в другое приложение Iphone - PullRequest
2 голосов
/ 04 февраля 2010

Кто-нибудь знает какой-либо пример или код с открытым исходным кодом, который делает это? Или описание, объясняющее, как это сделать?

У Apple довольно много примеров кода, который открывает веб-адреса в других приложениях. Но я не могу найти примеров, когда приложение просит другое приложение открыть файл, хранящийся на телефоне.

Спасибо.

Ответы [ 6 ]

9 голосов
/ 04 февраля 2010

Есть два способа сделать это.

1) Если вы можете закодировать файл в виде строки, вы можете передать его в другое приложение через NSURL. Приложение-получатель «ReceivingApp» должно реализовывать

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 

в своем приложении-делегате. Отправьте свои данные, используя

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"receivingapp://your.data.goes.here"]]];

2) Используйте картон .

Я бы использовал пользовательскую схему URL, поскольку она 1) сэкономит вам несколько шагов и 2) не даст остальной части ОС доступ к вашим данным, если что-то пойдет не так с принимающим приложением. Я не уверен, каков предел персонажа в NSURL, но он довольно большой.

4 голосов
/ 04 февраля 2010

iPhone SDK не имеет официально разрешенного общего репозитория - каждое приложение помещается в «песочницу». Если данные не могут быть переданы по схеме URL, то это должно быть сделано через «облако». Stanza справился с этим, сохранив некоторые данные в папке DCIM (в которой хранятся фотографии пользователя), но Apple вынудила их удалить эту функцию всего несколько дней назад.

Ходят слухи, что мы получим новое хранилище данных в 4.0 SDK, но ничего надежного.

1 голос
/ 04 февраля 2010

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

Если вы пишете оба приложения самостоятельно, вы можете передать местоположение файла одного приложения другому, используя пользовательскую схему URL . Также, если файл достаточно мал, вы можете передать его как часть URL.

0 голосов
/ 05 февраля 2010

Помимо пользовательской схемы URL, о которой упоминались другие ответы, вы можете взломать этот путь, сохранив данные, зашифрованные в полях временного контакта, которые вы можете создать с помощью API AddressBook.

0 голосов
/ 04 февраля 2010

Чтобы немного расширить ответ Фрэнка, я думаю, что вы можете использовать пользовательский URL с путем к файлу, но я думаю, что путь, который вы должны использовать, будет где-то в каталоге Caches:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];

Я предполагаю, что другие приложения могут видеть в этом же месте.

0 голосов
/ 04 февраля 2010

Приложения не могут получить доступ к файлам друг друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...