为什么我的iOS应用程序不能在其他应用程序的“打开”对话框中显示?

我试图实现注册过程,允许我的iOS应用程序显示在其他应用程序的“Open in”列表中(如Apple的文档交互编程主题中所述 )。 我希望我的应用程序能够处理将提供标准audio文件格式(MP3,AIFF,WAV等)的任何应用程序的audio。

据我所知,我所需要做的就是将CFBundleDocumentTypes键和相关的子数据添加到我的应用的Info.plist中。 这是我(通过Xcode 4的文档types编辑器):

 <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> 

此代码的添加不会在应用程序的“打开方式”菜单中显示我的应用程序(我正在使用Dropbox中的MP3作为文件源在iPhone上进行testing,应用程序AudioMemos和Evernote都显示在Dropbox中的MP3文件中,所以我知道格式是支持的)。 有什么明显的我做错了,还是有什么我需要实现?

(注意:我没有在Info.plist中设置一个UTExportedTypeDeclarations项目,因为我知道这些只对自定义的UTI是必需的,因为我使用的是系统UTI,我认为这不是必须的,但是请纠正我我错了。)

编辑

我已经添加了以下导出types的UTI,但没有成功:

 <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> 

对于所有标准文件格式:

 <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> 

你应该使用Alternate而不是Alternative

 <key>LSHandlerRank</key> <string>Alternate</string> 
 <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> 
Interesting Posts