2012-02-13 14 views
28

Sto cercando di implementare il processo di registrazione che consente alla mia app iOS di apparire nell'elenco "Apri in" di altre applicazioni (come descritto in Apple's Document Interaction Programming Topics). Voglio che la mia app sia in grado di gestire l'audio da qualsiasi app che fornisca un formato di file audio standard (MP3, AIFF, WAV, ecc.).Perché la mia app per iOS non viene visualizzata nella finestra di dialogo "Apri in" di altre app?

Da quello che ho capito, tutto quello che dovrei fare è aggiungere la chiave CFBundleDocumentTypes, con i relativi dati secondari, al mio Info.plist dell'app. Questo è quello che ho messo in (via Xcode 4 di tipi di 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> 

L'aggiunta di questo codice non visualizza la mia app in app 'Apri in' menu (sto testando su un iPhone, utilizzando un MP3 in Dropbox come sorgente di file Le app AudioMemos e Evernote vengono entrambe visualizzate per un file MP3 in Dropbox, quindi so che il formato è supportato). C'è qualcosa di ovvio che sto sbagliando, o c'è qualcos'altro che devo implementare?

(Nota: non ho impostato un elemento UTExportedTypeDeclarations nel mio Info.plist, in quanto ho capito che questi sono necessari solo per UTI personalizzati. Come sto usando System UTIs credo che non dovrebbe essere necessario, ma per favore correggetemi se sbaglio)

EDIT

ho aggiunto il seguente esportato tipo UTI, senza successo:.

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

risposta

55

Per tutti i formati di file standard:

<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

Non so esattamente che cosa riparato, ma ho copiato la sezione audio dal codice sopra e ora funziona! Grazie! (Ho modificato il codice per evidenziare la sezione audio che ho copiato.) –

+0

Per riferimento futuro, le UTI di tipo esportato e importato non erano necessarie per il corretto funzionamento. –

+0

Grazie mille per questo post ben funzionante ... ottimo lavoro –

5

si dovrebbe usare Alternate invece di 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> 
Problemi correlati