2012-02-13 5 views
28

Я пытаюсь реализовать процесс регистрации, который позволяет моему приложению iOS отображаться в списке «Открытые» в других приложениях (как описано в Apple's Document Interaction Programming Topics). Я хочу, чтобы мое приложение могло обрабатывать аудио из любого приложения, которое обеспечит стандартный формат аудиофайлов (MP3, AIFF, WAV и т. Д.).Почему мое приложение iOS не отображается в диалоговом окне «Открыть в других приложениях»?

Как я понимаю, все, что мне нужно сделать, это добавить ключ CFBundleDocumentTypes с соответствующими подданными в Info.plist моего приложения. Это то, что я кладу в (через Xcode 4 по типам документов редактора):

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFiles</key> 
     <array> 
      <string>scrubbulator-icon</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>Audio</string> 
     <key>LSHandlerRank</key> 
     <string>Alternative</string> 
     <key>LSItemContentTypes</key> 
     <array> 
     <string>public.mp3</string> 
     </array> 
    </dict> 
</array> 

Добавление этого кода не отображается мое приложение в приложениях Открыть в "меню (я тестирование на iPhone, используя MP3 в Dropbox в качестве источника файла. Приложения AudioMemos и Evernote отображаются для файла MP3 в Dropbox, поэтому я знаю, что формат поддерживается). Есть ли что-то очевидное, что я делаю неправильно, или есть что-то еще, что мне нужно реализовать?

(Примечание: я не настроил элемент UTExportedTypeDeclarations в своем Info.plist, так как я понимаю, что это необходимо только для пользовательских UTI. Поскольку я использую системные UTI, я считаю, что это не обязательно, но пожалуйста, поправьте меня, если я ошибаюсь)

EDIT

Я добавил следующий экспортированный тип ИМП, без успеха:.

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeConformsTo</key> 
     <array> 
     <string>kUTTypeMP3</string> 
     </array> 
     <key>UTTypeDescription</key> 
     <string>Audio file</string> 
     <key>UTTypeIdentifier</key> 
     <string>kUTTypeMP3</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
     <key>public.filename-extension</key> 
     <array> 
      <string>mp3</string> 
     </array> 
     </dict> 
    </dict> 
</array> 

ответ

55

Для всех стандартных форматов файлов:

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Unknown File</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.calendar-event</string> 
      <string>public.database</string> 
      <string>public.executable</string> 
      <string>public.data</string> 
      <string>public.content </string> 
      <string>public.item</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Video</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.video</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.image</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Web Archive</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.apple.webarchive</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>iWork Keynote</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.apple.keynote.key</string> 
      <string>com.apple.iwork.keynote.key</string> 
      <string>com.apple.iwork.keynote.kth</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>iWork Numbers</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.apple.numbers.numbers</string> 
      <string>com.apple.iwork.numbers.numbers</string> 
      <string>com.apple.iwork.numbers.template</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>iWork Pages</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.apple.page.pages</string> 
      <string>com.apple.iwork.pages.pages</string> 
      <string>com.apple.iwork.pages.template</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>OpenDocument Spreadsheet</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.oasis.opendocument.spreadsheet</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>OpenDocument Presentation</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.oasis.opendocument.presentation</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>OpenDocument Text</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.oasis.opendocument.text</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Folder</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.folder</string> 
     </array> 
    </dict> 

<dict> 
     <key>CFBundleTypeName</key> 
     <string>Audio</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.audio</string> 
      <string>public.mp3</string> 
      <string>public.mpeg-4-audio</string> 
      <string>com.apple.protected-​mpeg-4-audio</string> 
      <string>public.aifc-audio</string> 
      <string>com.apple.coreaudio-​format</string> 
      <string>public.aiff-audio</string> 
     </array> 
    </dict> 

<dict> 
     <key>CFBundleTypeName</key> 
     <string>Movie</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.movie</string> 
      <string>public.3gpp2</string> 
      <string>public.3gpp</string> 
      <string>public.mpeg</string> 
      <string>com.apple.quicktime-movie</string> 
      <string>public.mpeg-4</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>GIF image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.compuserve.gif</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>PNG image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.png</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>TIFF image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.tiff</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>JPEG image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.jpeg</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>XML</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.xml</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>HTML</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.html</string> 
      <string>public.xhtml</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Rich Text</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.rtf</string> 
      <string>com.apple.rtfd</string> 
      <string>com.apple.flat-rtfd</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Text</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.text</string> 
      <string>public.plain-text</string> 
      <string>public.utf8-plain-text</string> 
      <string>public.utf16-external-plain-​text</string> 
      <string>public.utf16-plain-text</string> 
      <string>com.apple.traditional-mac-​plain-text</string> 
      <string>public.source-code</string> 
      <string>public.c-source</string> 
      <string>public.objective-c-source</string> 
      <string>public.c-plus-plus-source</string> 
      <string>public.objective-c-plus-​plus-source</string> 
      <string>public.c-header</string> 
      <string>public.c-plus-plus-header</string> 
      <string>com.sun.java-source</string> 
      <string>public.script</string> 
      <string>public.shell-script</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>zip</string> 
      <string>zipx</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>Zip archive</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.zip-archive</string> 
      <string>public.archive</string> 
      <string>com.pkware.zip-archive</string> 
      <string>com.pkware.zipx-archive</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>rar</string> 
      <string>RAR</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>Rar archive</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.rarlab.rar-archive</string> 
      <string>public.archive</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>7z</string> 
      <string>7Z</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>7z archive</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.7-zip.7-zip-archive</string> 
      <string>public.archive</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Waveform audio</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.microsoft.waveform-​audio</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Windows icon image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.microsoft.ico</string> 
      <string>com.apple.icns</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Windows bitmap image</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.microsoft.bmp</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Microsoft PowerPoint</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.microsoft.powerpoint.​ppt</string> 
      <string>org.openxmlformats.presentationml.presentation</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Microsoft Excel</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>org.openxmlformats.spreadsheetml.sheet</string> 
      <string>com.microsoft.excel.xls</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>Microsoft Word</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.microsoft.word.doc</string> 
      <string>com.microsoft.word.wordml</string> 
      <string>org.openxmlformats.wordprocessingml.document</string> 
     </array> 
    </dict> 
    <dict> 
     <key>CFBundleTypeName</key> 
     <string>PDF</string> 
     <key>LSHandlerRank</key> 
     <string>Alternate</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.adobe.pdf</string> 
     </array> 
    </dict> 
</array> 
+1

Я не то, что установил его, но я скопировал часть аудио с вашего код выше, и теперь он работает! Спасибо! (Я отредактировал ваш код, чтобы выделить раздел аудио, который я скопировал.) –

+0

Для справки в будущем для этого не нужно было использовать экспортированные и импортированные типы UTI. –

+0

Спасибо большое за этот пост хорошо работает ... отличная работа –

5

Вы должны использовать Alternate вместо Alternative

<key>LSHandlerRank</key> 
<string>Alternate</string> 
0
<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeExtensions</key> 
     <array> 
      <string>"*"</string> 
     </array> 
     <key>CFBundleTypeName</key> 
     <string>Unknown</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>public.data</string> 
     </array> 
    </dict> 
</array>