如果您的应用程序定义了一种新的文件类型,则需要在Info.plist
文件的UTExportedTypeDeclarations
部分中定义自定义UTI。
这可以在Xcode的应用程序目标的Info选项卡下的导出的UTIs部分中设置,或者您可以手动更新Info.plist文件,如下所示。
CFBundleDocumentTypes
用于声明您的应用程序可以打开哪些文件类型。
以下是一个虚构的文件类型,它恰好是一个扩展名为.fun
的二进制文件。
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>My Custom Binary File</string>
<key>UTTypeIdentifier</key>
<string>com.mycompany.myapp.myfiletype</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>fun</string>
</array>
</dict>
</dict>
</array>
有了这个设置,您还可以设置您的CFBundleDocumentTypes
,以便您的应用程序被提供为打开此类文件的选择:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeIconFiles</key>
<array/>
<key>CFBundleTypeName</key>
<string>My Custom Binary File</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.mycompany.myapp.myfiletype</string>
</array>
</dict>
</array>
请注意,CFBundleDocumentTypes
的 LSItemContentTypes
值必须与 UTI 的 UTTypeIdentifier
匹配。
com.mycompany.myapp.myfiletype
这个值(两处都要修改)需要是您定义的唯一值。这就是您的自定义 UTI。确保整个值从未被其他人使用过。这可以通过使用我示例中显示的“反向域名”方法轻松完成。在“com.mycompany”之后放置的内容完全取决于您自己(当然,“mycompany”应更改为您实际的域名)。 - rmaddyUIActivityViewController
。 - rmaddylet activityViewController = UIActivityViewController(activityItems: dataToShare, applicationActivities: nil) activityViewController.popoverPresentationController?.sourceView = self.view self.present(activityViewController, animated: true, completion: nil)
- ZiEiTiA