2010-07-28 2 views
3

J'utilise AquaticPrime pour la génération de licence dans mon application, et comme le guide du développeur suggère que j'essaie d'enregistrer une extension de fichier personnalisée, de sorte que les utilisateurs puissent simplement cliquer sur la licence et mon application va l'ouvrir et peut ensuite vérifier la licence.Problème d'enregistrement du type de fichier via UTIs

Pour ce faire, je l'ai ajouté une déclaration UTI exportée à mon Info.plist comme suit:

<key>UTExportedTypeDeclarations</key> 
<array> 
    <dict> 
     <key>UTTypeDescription</key> 
     <string>MyApp License File</string> 
     <key>UTTypeConformsTo</key> 
     <array> 
      <string>public.xml</string> 
     </array> 
     <key>UTTypeIdentifier</key> 
     <string>com.mycompany.myapplicense</string> 
     <key>UTTypeTagSpecification</key> 
     <dict> 
      <key>public.filename-extension</key> 
      <array> 
       <string>myapplicense</string> 
      </array> 
     </dict> 
    </dict> 
</array> 

Cependant, quand je double-cliquez sur un fichier avec cette extension, il ne s'ouvre pas MyApp, et MyApp n'apparaît pas non plus comme l'une des applications recommandées pour ouvrir le type de fichier. De même, lorsque vous affichez le panneau Informations pour le fichier, la description du type de fichier spécifiée ci-dessus n'apparaît pas.

Quelqu'un peut-il voir quelque chose de mal avec ma déclaration UTI, ou y at-il quelque chose d'autre que j'ai manqué?

Merci

Répondre

3

Vous devez également une déclaration CFBundleDocumentTypes.

<key>CFBundleDocumentTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeIconFile</key> 
     <string>MyAppLicenseIcon</string> 
     <key>CFBundleTypeRole</key> 
     <string>Viewer</string> 
     <key>NSDocumentClass</key> 
     <string>MyAppLicenseHandler</string> 
     <key>LSItemContentTypes</key> 
     <array> 
      <string>com.mycompany.myapplicense</string> 
     </array> 
    </dict> 
</array> 
+0

Je peux me tromper, mais je pensais que ce n'était nécessaire que lorsque l'application est basée sur des documents? – Griff

+0

J'avais tort - cela fonctionne. Merci beaucoup! – Griff

0

Pour ajouter à cela, dans mon cas, j'ai dû également vous assurer que je suis entré dans l'UTI format approprié en tant que tel:

 <key>UTTypeConformsTo</key> 
    <array> 
     <string>public.xml</string> 

mon dossier étant un .plist simple, il est toujours conforme à xml. Vous devez vous assurer que vous savez quel format UTI vous conformez.

Questions connexes