Программно получить список установленных приложений, которые поддерживают данный тип файла
Хотя очевидно, что мы не можем получить список установленных приложений на iOS, есть ли уловки, позволяющие нам определить список приложений, зарегистрированных для данного типа файлов? То есть список, который пользователь увидит в меню "Открыть в..." для данного конкретного типа файла. canOpenURL возвращает только логическое значение, но в идеале возвращает список поддерживаемых установленных приложений. Есть идеи?
3 ответа
Я сомневаюсь, что любой из ваших двух вопросов ("определить список приложений для данного типа файлов" или "как реализовать" открыть в... "") возможен в текущих версиях iOS, поскольку пользователи не видят отдельные файлы на домашние экраны, которые показывают приложения. Кроме того, приложение не может выполнить событие "открыть отдельное приложение с этим конкретным файлом" (что легко сделать на Macintosh с Apple Events).
Но они звучат как большие запросы, которые вы можете отправить в Apple по адресу http://bugreporter.apple.com/ (в который вы можете войти, если вы являетесь зарегистрированным разработчиком Apple). Если достаточное количество людей попросят эти функции (и потенциальная функция "открыть в..." действительно часто запрашиваемая функция), Apple настоятельно рекомендует включить их в будущие выпуски iOS.
Открыть в конечно можно UIDocumentInteractionController
Вам просто нужно создать экземпляр экземпляра UIDocumentInteractionController:
//Following in header file:
UIDocumentInteractionController *docInteractionController;
Реализовать делегата:
<UIDocumentInteractionControllerDelegate>
.m:
//Here the url is the document URL that you want to open (or you want to apply open in functionality)
self.docInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
self.docInteractionController.delegate = self;
Метод Open In будет выглядеть следующим образом:
- (void) openIn: (id) sender {
[self.docInteractionController presentOptionsMenuFromBarButtonItem:sender animated:YES];
}
и как только вы закончите:
[self.docInteractionController dismissMenuAnimated:YES];
и это все. Это выведет список приложений, поддерживаемых для документа, и при их выборе запустит соответствующее приложение с URL-адресом документа, с которым мы создали экземпляр.
Вы можете увидеть этот пример программы. Это может помочь вам. Он использовал экземпляр класса UIDocumentaInteractionController со своим свойством UTI (уникальный идентификатор типа). Это помогает в получении списка установленных приложений на вашем телефоне, которые поддерживают тип файла, который вы открыли в своем приложении. Возможно, вам придется немного переписать свойство UTI по вашему усмотрению