2012-02-13 16 views
28

Estoy tratando de implementar el proceso de registro que permite que mi aplicación de iOS aparezca en la lista "Abrir en" de otras aplicaciones (como se describe en Apple's Document Interaction Programming Topics). Quiero que mi aplicación pueda manejar audio desde cualquier aplicación que proporcione un formato de archivo de audio estándar (MP3, AIFF, WAV, etc.).¿Por qué mi aplicación iOS no se muestra en el cuadro de diálogo "Abrir en" de otras aplicaciones?

Según tengo entendido, todo lo que debería hacer es agregar la clave CFBundleDocumentTypes, con los subdatos pertinentes, al Info.plist de mi aplicación. Esto es lo que puse en (a través de Xcode 4 Tipos de documento editor):

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

La adición de este código no se muestra mi aplicación en las aplicaciones 'Abrir en' menú (estoy probando en un iPhone, usando una MP3 en Dropbox como fuente del archivo. Las aplicaciones AudioMemos y Evernote se muestran para un archivo MP3 en Dropbox, así que sé que el formato es compatible). ¿Hay algo obvio que estoy haciendo mal, o hay algo más que necesito implementar?

(Nota: No he configurado un elemento UTExportedTypeDeclarations en mi Info.plist, ya que entiendo que esto es necesario solo para las UTI personalizadas. Como estoy usando las UTI del sistema, creo que no debería ser necesario, pero por favor, corríjanme si me equivoco)

EDITAR

he añadido la siguiente Exportados Tipo UTI, sin éxito:.

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

Respuesta

55

para todos los formatos de archivo estándar:

<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

No exactamente lo arreglaron, pero copiado la sección de audio de su codifique arriba y ahora funciona! ¡Gracias! (He editado el código para resaltar la sección de audio que copié). –

+0

Para referencia futura, las UTI de tipo exportado e importado no fueron necesarias para que esto funcione. –

+0

Muchas gracias por este post muy bien trabajando ... buen trabajo –

5

que puedes usar en lugar de AlternateAlternative

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