ios: пусть люди делятся ссылкой / изображением / текстом на мое приложение
Как сделать так, чтобы мое приложение отображалось в списке активности Safari, фотографиях и т. Д.? Я хотел бы позволить людям делиться ссылкой / изображением или текстом через мое приложение, как они делают на Facebook.
Facebook / Twitter и т. Д. Доступны по умолчанию UIActivityType
список, но как другие приложения, такие как Pinterest, Zomato и т. д. достичь этого?
3 ответа
Самая простая возможность - использовать сопоставление типов файлов. Там уже есть много учебных пособий, так как концепция уже сложилась, поэтому я просто проведу вас по основным ключевым словам здесь.
Первое, что нужно определить - это универсальные идентификаторы типов (UTI), которые вы хотите поддерживать. Вот список доступных на данный момент UTI от Apple.
Затем в вашем проекте XCode откройте цель и перейдите на вкладку Информация. Там вы найдете запись Типы документов. Откройте его и нажмите знак плюс, чтобы добавить новый тип документа. Укажите имя и UTI, который вы хотите поддерживать (в этом примере я выбрал PDF):
Обратите внимание, что вам также необходимо указать дополнительные свойства документа. Большинство учебников положить в (LSHandlerRank, Alternate)
как ключ, значение пары, но я не нашел причин для этого. Кажется, чтобы работать с (foo, bar)
также.
Затем запустите приложение, чтобы оно зарегистрировалось на устройстве.
Когда у вас есть PDF, например, вложение в приложении "Почта", ваше приложение появится в списке:
Наконец, в вашем AppDelegate вам нужно реализовать следующий метод:
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSLog(@"App opened with url %@", url);
return YES;
}
который вызывается всякий раз, когда ваше приложение получило PDF. Файлы будут помещены в специальную папку "Входящие", а в URL-адресе будет указано имя предоставленного файла.
РЕДАКТИРОВАТЬ
Это пример вывода консоли с моего iPhone:
2015-03-19 15:27:32.841 so 29147257[3951:1529409] App opened with url file:///private/var/mobile/Containers/Data/Application/A5723926-F869-49C0-A2AF-756795932B81/Documents/Inbox/first-1.pdf
Это новая функциональность, реализованная в iOS 8 и выше (и OS X 10.10 и выше). Это называется Расширения. Расширения позволяют приложениям выходить из своей изолированной программной среды Apple и получать доступ к другим частям ОС, включая центр уведомлений и общие листы. Apple, это выглядит так:
Начиная с iOS 8.0 и OS X v10.10, расширение приложения позволяет расширить пользовательские функции и контент за пределы приложения и сделать его доступным для пользователей, когда они используют другие приложения или систему. Вы создаете расширение приложения, чтобы включить определенную задачу; после того, как пользователи получат ваше расширение, они могут использовать его для выполнения этой задачи в различных контекстах. Например, если вы предоставите расширение, позволяющее делиться информацией с вашим сайтом социальной сети, пользователи могут использовать его для публикации комментария во время просмотра веб-страниц. Или, если вы предоставите расширение, которое отображает текущие спортивные результаты, пользователи могут поместить его в Центр уведомлений, чтобы они могли получать последние результаты при открытии представления "Сегодня". Вы даже можете создать расширение, которое предоставляет пользовательскую клавиатуру, которую пользователи могут использовать вместо системной клавиатуры iOS.
Существует несколько различных типов расширений, включая приложения Apple Watch. Вы можете просмотреть все эти типы в документации Apple.
Чтобы начать создавать расширения, вот несколько ресурсов:
Вам нужно будет использовать UTImportedTypeDeclarations в info.plist
Хороший учебник этого http://www.raywenderlich.com/1948/how-integrate-itunes-file-sharing-with-your-ios-app