En mi aplicación, quería incluir un complemento QuickLook que lea una extensión que no sea del sistema que también usan otras aplicaciones (usemos RAR para este ejemplo). Declaro la extensión como un Exported UTI
en Info.plist mi aplicación del paquete de este modo:UTI y asociaciones de extensiones de archivos
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
<string>com.rarlab.rar-archive</string>
</array>
<key>UTTypeDescription</key>
<string>Custom RAR Archive</string>
<key>UTTypeIdentifier</key>
<string>com.my-company.rarx-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
Y también puedo importar la forma apropiada RAR UTI:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.archive</string>
</array>
<key>UTTypeDescription</key>
<string>RAR Archive</string>
<key>UTTypeIconFile</key>
<string>RAR</string>
<key>UTTypeIdentifier</key>
<string>com.rarlab.rar-archive</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>rar</string>
<string>rarx</string>
</array>
</dict>
</dict>
</array>
Los archivos RARX nunca parecen conseguir asociados con mi aplicación después de que lo ejecute, sin embargo. Para comprobar la asociación, solía mdls
así:
mdls -name kMDItemContentTypeTree "/Users/Me/.../A File.rarx"
>>> kMDItemContentTypeTree = (
"com.another-company.rarx-archive",
"public.data",
"public.item",
"public.archive"
)
¿Por qué no es mi UTI (com.my-company.rarx-archive
) a aparecer en esa lista? Creo que esto está provocando que mi complemento Quick Look no se active, ya que los archivos están asociados con la UTI com.another-company.rarx-archive
. La otra aplicación en mi sistema es lo que se usa en su lugar. Ejecutando qlmanage
con salida de depuración confirma esto.