Как связать приложение 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 в приложении внутри.

  • Добавление кварцера в xcode 4 для iOS
  • Как отправлять параметры с помощью MonoTouch.ObjCRuntime.Selector и Perform Selector
  • Нужно ли использовать @synchronized при вызове метода reloadData UITableView?
  • Получение жестов в родительском представлении AVPlayer
  • Получить UIBarButtonSystemItem обратно из UIBarButtonItem
  • Получение «Ожидаемый атрибут свойства до« сильного »при компиляции файла ARC с помощью LLVM-GCC
  • UIScrollView прокручивает слишком далеко после первоначального увеличения
  • Приложение iOS отправляет предупреждение только в первый раз с помощью приложения
  • Получение информации о пользователе из Facebook в iOS
  • Ориентация устройства - изменение законным способом (iOS 4.0+)
  • iphone / ipad неожиданно перестает отвечать на запросы firebase
  • Interesting Posts

    Как надежно блокировать дублирование вызовов анимации в Objective-C?

    presentModalView, входящий со стороны в моем приложении для ландшафта

    UITableView останавливает обновление контента при прокрутке через просмотр?

    animationControllerForPresentedController не вызывается

    Быстрая передача структуры по ссылке?

    Переход при первоначальной настройке размера кадра UITextView в анимации UIView

    Получение Dead Air при вызове клиента iOS Twilio, если приложение в фоновом режиме

    Преобразование Swift UnsafePointer <AudioStreamBasicDescription> в словарь?

    Получать уведомления для SMS с помощью iPhone

    Как сохранить GMSCameraPosition?

    Пользовательский шрифт в симуляторе Apple Watch не показывает

    cameraOverlayView, чтобы обрезать результат в UIImagePickerController

    Сериализация асинхронных методов

    iOS 5.1 UISplitviewcontroller не позволяет presentModalViewController от RootViewController

    Получить текущий кадр из Youtube YTPlayerView

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