使用自定义文档类型

时间:2017-05-27 01:27:28

标签: ios swift macos-sierra uti

我使用Exported UTI为我的应用程序定义了包含二进制数据的自定义文档类型,标识符为“com.mycompany.gcp”。我正在使用此文档类型与我的应用程序的macOS和iOS版本交换数据。经过多次试验和错误,它运作得相当好。但是,我觉得我错过了关键的一步。

从我的应用导出文件时,我使用FileManager.createFile(atPath:, contents:, attributes:)创建文件。我使用gcp扩展创建文件,但是我不知道如何指定标识符类型,特别是将其设置为“com.mycompany.gcp”。当我导出文件时,如果我用mdls检查它,kMDItemContentType =“dyn.ah62d4rv4ge80s25u”,我假设它是指动态标识符,而不是我的标识符。

我的问题是:1)有没有办法在创建文件时设置标识符?我尝试过NSURL方法来设置标识符但没有成功。 2)这件事有关系吗?

我觉得答案问题2是肯定的。使用iOS,如果我通过电子邮件或空播文件,我可以使用我的应用程序打开它。但是,使用iMessage时,点击发送的文件时不会执行任何操作。

以下是我的应用的iOS版本的Info.plist中的相关键:

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeIconFiles</key>
        <array/>
        <key>CFBundleTypeName</key>
        <string>GCP File</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>com.mycompany.gcp</string>
        </array>
    </dict>
</array>
<key>UTExportedTypeDeclarations</key>
<array>
    <dict>
        <key>UTTypeConformsTo</key>
        <array>
            <string>public.data</string>
        </array>
        <key>UTTypeDescription</key>
        <string>GCP File</string>
        <key>UTTypeIdentifier</key>
        <string>com.mycompany.gcp</string>
        <key>UTTypeTagSpecification</key>
        <dict>
            <key>public.filename-extension</key>
            <array>
                <string>gcp</string>
            </array>
        </dict>
    </dict>
</array>

0 个答案:

没有答案