问题是通过UTI注册文件类型

时间:2010-07-28 15:46:20

标签: cocoa xcode plist

我正在使用AquaticPrime在我的应用中生成许可证,并且正如开发者指南建议我尝试注册自定义文件扩展名,这样用户只需单击许可证即可打开我的应用程序它然后可以验证许可证。

为此,我已将一个导出的UTI声明添加到我的Info.plist中,如下所示:

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

但是,当我双击具有该扩展名的文件时,它不会在MyApp中打开,MyApp也不会显示为打开文件类型的推荐应用程序之一。同样,在查看文件的“信息”面板时,不会显示上面指定的文件类型说明。

任何人都可以看到我的UTI声明有什么问题,还是有其他我错过的东西?

由于

2 个答案:

答案 0 :(得分:3)

您还需要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>

答案 1 :(得分:0)

除此之外,在我的情况下,我还必须确保我输入正确格式的UTI:

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

我的文件是一个简单的.plist,它仍然符合xml。您需要确保知道符合哪种UTI格式。