我通过子类化UIDocument(它是NSData的档案库)来创建自定义文档类型。我使用问题/答案对here做到了这一点。 UIDocument可以完美运行,但是当我导出/导入新文件类型时会出现问题。
这是我的info.plist中的我的文档类型:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string></string>
</array>
<key>CFBundleTypeIconFiles</key>
<array>
<string>320.png</string>
<string>64.png</string>
<string>44.png</string>
<string>22.png</string>
</array>
<key>CFBundleTypeName</key>
<string>TrailMap File</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.TrailMap.TrailMap</string>
</array>
</dict>
</array>
这是我的info.plist中的导出的UTI:
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>TrailMap</string>
<key>UTTypeIdentifier</key>
<string>com.TrailMap.TrailMap</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>trailmap</string>
</array>
</dict>
</dict>
</array>
您可能会注意到,我的UTTypeConformsTo
键的值是public.data
。我写这篇文章是因为主题啤酒教程here很好。
当导出到Notes并导出到UTTypeConformsTo
值为public.data
或public.item
的电子邮件时,文件的外观如下:
这两个UTTypeConformsTo
值均具有正确的图标和正确的操作。 (单击时,将显示“打开方式”对话框,其中显示了我的应用程序)绝对适合电子邮件和Notes导出,但不适用于iMessage。
这是拥有我的应用程序的人的本机iMessage线程中的外观:
这是没有我的应用程序的人的本机iMessage线程中的外观:
这就是问题所在。对于拥有该应用程序的人,该文件不仅会显示为未知类型,对于没有该应用程序的人,它还会显示一个文件夹图标,并且在导出时,根本没有任何图标。我希望有人告诉我如何修复该图标,但更重要的是,在iMessage中点击文件绝对没有任何作用,那么我需要对info.plist进行什么操作才能显示“打开于”对话框?