我使用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>