Afficher les icons pour les UTI personnalisées dans UIDocumentPickerViewController

L'application iOS sur laquelle je travaille exporte une UTI. Les parties pertinentes de l' Info.plist ressemblent à ceci:

 <key>UTExportedTypeDeclarations</key> <array> <dict> <key>UTTypeConformsTo</key> <array> <ssortingng>public.xml</ssortingng> <ssortingng>public.data</ssortingng> </array> <key>UTTypeDescription</key> <ssortingng>GPX Document</ssortingng> <key>UTTypeIdentifier</key> <ssortingng>de.company.app.gpx</ssortingng> <key>UTTypeSize320IconFile</key> <ssortingng>Doc320.png</ssortingng> <key>UTTypeSize64IconFile</key> <ssortingng>Doc64.png</ssortingng> <key>UTTypeTagSpecification</key> <dict> <key>public.filename-extension</key> <array> <ssortingng>gpx</ssortingng> </array> </dict> </dict> </array> 

Je veux que l'application gère les files GPX via les dialogs "Ouvrir dans …", donc il y a aussi une définition de type de document (qui fait reference à l'UTI) dans le même PLIST:

 <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeIconFiles</key> <array> <ssortingng>Icon29.png</ssortingng> <ssortingng>Icon58.png</ssortingng> </array> <key>CFBundleTypeName</key> <ssortingng>de.company.app.gpx</ssortingng> <key>CFBundleTypeRole</key> <ssortingng>Editor</ssortingng> <key>LSHandlerRank</key> <ssortingng>Owner</ssortingng> <key>LSItemContentTypes</key> <array> <ssortingng>de.company.app.gpx</ssortingng> </array> </dict> </array> 

Lors de l'ouverture de files GPX dans Safari, il affiche l'icône que j'ai spécifiée sous CFBundleTypeIconFiles , à savoir Icon58.png sur un périphérique rétine. L'application autorise également les imports via la class UIDocumentPickerViewController introduite dans iOS 8, et bien que la définition de l'UTI fonctionne correctement pour filterr les files pertinents dans iCloud Drive, elle ne montre aucune de mes illustrations:

Je me suis assuré que tous les files image référencés ( Icon29.png , Icon58.png , Doc64.png , Doc320.png ) sont bien dans le directory racine de l'application. Les numbers dans leurs noms indiquent leur hauteur en pixels. Les files Doc... sont carrés, les deux autres suivent cette spécification (iPhone uniquement).

J'ai essentiellement deux questions:

1) Comment faire en sorte que l'UIDocumentPickerViewController affiche des icons personnalisées pour nos UTI?

2) Existe-t-il d'autres cas d'utilisation où UTTypeSize64IconFile et UTTypeSize320IconFile sont utilisés?

Malheureusement, la réponse est que cela ne peut être fait à less que votre application ait le contrôle sur la façon dont ces files sont écrits sur le disque. Dans ce cas, vous pouvez sous- UIDocument et écrire des vignettes. Voici la réponse originale postée par un ingénieur d'Apple, postée sur les forums des développeurs Apple (login requirejs). Il inclut un exemple de code pour illustrer comment cela est fait.

Je n'ai pas encore trouvé de réponse à la deuxième partie de ma question.

Je crois que vous utilisez les mauvaises icons de taille dans votre key CFBundleTypeIconFiles. La taille que vous utilisez est pour l'icône des parameters.

Pour tester ma théorie, s'il vous plaît append quelques files de plus avec des tailles différentes. De plus, toutes les icons sont carrées. L'image que vous avez dans votre question est rectangular.

Selon la section Icon and Image Design -> Icône de l'application :

Icônes de document

Si votre application iOS crée des documents d'un type personnalisé, vous souhaitez que les users puissent reconnaître ces documents en un coup d'œil. Vous n'avez pas besoin de concevoir une icône personnalisée à cette fin, car iOS utilise l'icône de votre application pour créer des icons de document pour vous.

Et extrait des icons d'application :

Icône de l'application (obligatoire) (iPhone)

  • 60 x 60 pixels
  • 120 x 120 pixels (@ 2x)

C'est l'icône principale pour les applications fonctionnant sur iPhone et iPod touch dans iOS 7 et versions ultérieures.

Icône Paramètres (Tous les appareils)

  • 29 x 29 pixels
  • 58 x 58 pixels (@ 2x)