在iOS中关联我的应用程序的自定义文件
我正在尝试关联我的应用程序创建的自定义文件(它是XML),以便用户可以将文件通过电子邮件发送给对方。 我在这里遵循了优秀的教程:
如何将文件类型与iPhone应用程序相关联?
该文件名为XXX.checklist
但它并没有关联。 我相信我的问题在于public.mime-type键,因为我不知道我应该把它放在那里。 以下是相关的info-plist条目
CFBundleDocumentTypes CFBundleTypeIconFiles docIcon64.png docIcon320.png CFBundleTypeName My App Checklist CFBundleTypeRole Viewer LSHandlerRank Owner LSItemContentTypes com.mycompany.appid.checklist UTExportedTypeDeclarations UTTypeConformsTo public.content/// i tried public.text but it allowed the file to be opened by the devices default text viewer which I would not like. UTTypeDescription My App Checklist UTTypeIdentifier com.mycompany.appid.checklist UTTypeTagSpecification public.filename-extension // fixed this key checklist public.mime-type text/xml /// changed to this, still doest work though
如果您的UTI被声明为public.data
我假设您的清单文件是自定义二进制数据。
然后,您应该只使用application/octet-stream
作为mime类型。
更新:知道了,你的问题比任何人都期望的更微不足道。 对于初学者来说public.data
一件事 – public.data
适用于所有后代(包括public.xml
),因此对于XML文件,您可以设置以下任何一个:
-
public.item
-
public.data
-
public.content
-
public.text
-
public.xml
提供打开文件类型的应用程序列表是基于系统中的已知应用程序构建的,可以处理给定的UTI以及您的UTI。 由于默认文本编辑器打开了public.text
和public.xml
因此它将是您的文件类型的默认操作(您的应用程序将显示在通过长按邮件附件调用的列表上)。
(显然)没有处理public.data
应用程序(对于public.content
),因此当您使用此UTI时,附件的默认操作是在您的应用程序中打开它。
现在到了…您的CFBundleDocumentTypes
有一个额外的
级别:
CFBundleDocumentTypes CFBundleTypeIconFiles docIcon64.png docIcon320.png CFBundleTypeName My App Checklist CFBundleTypeRole Viewer LSHandlerRank Owner LSItemContentTypes com.mycompany.appid.checklist
它会起作用。 UTExportedTypeDeclarations
部分已经很好了。