1

我有一个 iOS 应用程序,我希望能够发送和接收它自己的文件类型的实例。流程将是:

  • 用户 1 在应用程序中选择分享功能。这会生成我类型的文件(例如,file.myextension)并使用UIActivityViewController. 他们以某种方式将其发送给用户 2(AirDrop、电子邮件等)。
  • 用户 2 收到文件并打开它。系统提供使用我的应用程序打开它。

我已经完成了第一部分。我可以生成 file.myExtension 并为其提供UIActivityViewController文件 URL。这在用户 1 的设备上的 AirDrop 中正确显示,我可以使用 AirDrop 或电子邮件或其他方式传输文件。但是接收设备拒绝将我的应用程序显示为打开文件的选项。

我努力了:

  • 根据此 Apple Q&A声明导出和导入的 UTI 和文档类型。我已经三重检查了所有 ID 是否相同,并且所有 plist 键都拼写正确。
  • 我已经单独尝试了导出和导入的 UTI(使用文档类型)。这篇文章似乎说,如果我想打开一种文件类型,我想要的是 Imported 。这个 SO 答案说注册我拥有并想要打开的类型意味着我只想导出。单独工作都没有。

我的问题:我必须做什么才能打开我在 iOS 上拥有的文件扩展名?我是否同时定义了导入和导出的 UTI 以及文档类型?只是出口或进口之一?任何意外的必需属性?

4

2 回答 2

0

CFBundleDocumentTypes关键是你需要什么。它应该是一个数组,数组中的每一项都应该是一个字典。每个字典应包含以下键:

CFBundleTypeIconFiles(字符串数组)

CFBundleTypeName(字符串)

CFBundleTypeRole(字符串)

LSHandlerRank(字符串)

LSIsAppleDefaultForType(布尔值)

LSItemContentTypes(字符串数组)

这是我的应用程序的外观(为了避免泄露我公司的身份而涂黑的东西):

在此处输入图像描述

于 2016-08-18T18:09:41.177 回答
0

弄清楚了。文档中未明确说明的一个关键细节是“文档类型”部分中类型的最后一部分必须与您选择的文件扩展名匹配。

于 2016-08-18T18:19:41.090 回答