Как связать приложение iPhone с типом _every_?

Существует приложение iPhone «Другой почтовый клиент», который должен иметь возможность открывать любой файл для отправки его в виде вложения. Итак, я хочу связать это приложение с любым файлом с любым расширением.

Следуя документации, мы должны объявить поддержку файлов с корневым UTI-типом public.data – любой файл должен принадлежать этому типу. Это работает, но совсем нет. В этом случае наше приложение не сможет открыть какой-либо файл, а только те, которые уже зарегистрированы в системе. Например, если в любом приложении (например, dropbox) мы попытаемся «открыть в …» файл с неизвестным расширением (file.unknowntype) с помощью UIDocumentInteractionController, тогда ответ будет отрицательным, несмотря на то, что мы уже зарегистрировало наше приложение и поддерживает public.data типа root UTI. Но если вы установите другое приложение, которое поддерживает файлы с расширением (* .unknowntype), то наше приложение также сможет открыть эти файлы и появится в списке приложений «открыть в …».

UPD: @Gabriel Это часть CFBundleDocumentTypes моего файла info.plist:

 <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>MyMail</string> <key>LSItemContentTypes</key> <array> <string>public.data</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>LSHandlerRank</key> <string>Default</string> <key>CFBundleTypeIconFiles</key> <array> <string>Icon29.png</string> ... <string>Icon114.png</string> </array> </dict> </array> По <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>MyMail</string> <key>LSItemContentTypes</key> <array> <string>public.data</string> </array> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>LSHandlerRank</key> <string>Default</string> <key>CFBundleTypeIconFiles</key> <array> <string>Icon29.png</string> ... <string>Icon114.png</string> </array> </dict> </array> 

3 Solutions collect form web for “Как связать приложение iPhone с типом _every_?”

Я сделал приложение со следующей настройкой

 <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeIconFiles</key> <array/> <key>CFBundleTypeName</key> <string>name</string> <key>LSItemContentTypes</key> <array> <string>public.data</string> </array> </dict> </array> 

Когда я пытаюсь открыть .pdf из Safari, это приложение появляется в списке «open in ..». Можете ли вы создать пример приложения и попробовать?

UPD:

Похоже, что требование «public.data» (проверено также public.item, public.content) означает файл, который принадлежит к набору «все известные системным UTI», а не к любому файлу. Таким образом, вы сможете обрабатывать 99% файлов , которые пользователи хотят отправлять по электронной почте, но не все. Другим способом было бы экспортировать UTI, которые, по вашему мнению, важны, но которые по умолчанию не относятся к системным UTI.

Друг, я правильно прочитал ваш вопрос, прежде чем отправлять ответ. Я подумал, что у вас будет набор уже известных «любых типов» файлов для регистрации в большом объеме. Тем не менее, вы хотите динамически разместить свое приложение для регистрации любого типа файла, указанного в вашем приложении, в будущем и сделать его прикрепляемым. Для этого, насколько я знаю, вы не можете сделать приложение для универсальной поддержки любого неизвестного типа файла. Позвольте мне объяснить, что происходит,

  1. Предположим, что вы создаете приложение APP1, тогда оно не знает о расширении файла .XYZ и устанавливает его на iPhone.

  2. Но позже я разработал другое приложение APP2, которое содержит вышеуказанный код, и я регистрирую тип .XYZ из APP2 в любом iPhone, который он устанавливает.

  3. Итак, скажем, я устанавливаю APP2 в вашем iPhone, имея APP1. И когда мое приложение запускается, расширение .XYZ (известное APP2 раньше времени) регистрируется в iPhone.

Именно по этой причине ваше приложение APP1 может использовать этот файл .XYZ на удивление.

В заключение вы должны заранее знать определенный тип расширений перед тем, как сделать приложение.

Однако, это возможное решение для этого.

Решение :

  1. Определите максимальное количество символов, которые вы хотите поддерживать в extenstion. Давайте скажем 4.

  2. Теперь вы можете создать небольшую рутину Brute-Force для запуска в своем приложении, чтобы сделать все возможные комбинации символов и зарегистрировать их все. Это должно сделать любой файл с расширением до 4 символов, прикрепляемых к почте.

Надеюсь, это должно сделать трюк.

Удачи!

Идея для расследования …

Если установка другого приложения «исправляет» проблему, попробуйте проверить файл других приложений Info.plist, чтобы узнать, регистрирует или экспортирует какие-либо интересные UTI или аналогичные настройки.

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

Вы можете проверить содержимое файла ipa apps из iTunes , скопировав его, переименовав ipa в zip извлекая содержимое, а затем Show Package Contents в приложении внутри.

  • Непосредственный просмотр в CTCallCenter очень медленный. CallEventHandler
  • UIModalPresentationFormSheet на iPhone
  • Как создать приложение Iphone без MAC OS
  • iPhone: огромный всплеск памяти при создании NSString в цикле
  • Основные данные - как генерировать CoreDataGeneratedAccessors?
  • Получить дату следующей субботы в Objective-C?
  • IOS Push Notification пользовательский звуковой повтор?
  • Динамическое повышение UILabel в соответствии с текстом возвращает другое значение для iOS 7.0 и iOS 6.1
  • Как распечатать с помощью UIPrintInteractionController без диалога параметров печати
  • glGenLists и iOS
  • Отклонено App-магазином из-за покупок в приложении
  • Тестирование управления памятью в Objective-C (iOS)
  • Interesting Posts

    iOS 11 Модифицированная текстовая область загрузки Safari вне курсора

    Обновление приложения для использования основных данных из предыдущего двойного SQLite только постоянного хранилища

    Как изменить размер пользовательских разделителей UITableView на ландшафт и предотвратить их исчезновение

    Анимация popoverContentsize при нажатии контроллера навигационного представления в popover на iPad

    Google Analytics Pod устанавливает слишком много зависимостей

    Как сохранить загруженные данные в файловую систему устройства

    Почему я не могу загрузить «в конец беспроводного дистрибутива приложений для iOS»?

    Как отклонить модальный ViewController справа налево?

    Как получить доступ к макроу, определенному в моем pch, из библиотеки cocoapods?

    Статистическая уверенность в iPhone / iOS

    Получение размера файла с помощью NSFileManager

    Управление памятью для повторного использования UIAlertView

    Тестирование приложений IOS на устройствах ios, выполненных с использованием IONIC и angularJS

    UIScrollView scrollRectToVisible: анимированный: существует ли способ вызова метода при завершении анимации

    Возможно ли создать наследование, подобное структуре для строковых файлов в Xcode?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.