iOS 文档/文件类型关联 - 通配符 UTI?
Posted
技术标签:
【中文标题】iOS 文档/文件类型关联 - 通配符 UTI?【英文标题】:iOS Document/File type associations - wildcard UTI? 【发布时间】:2011-11-05 01:19:14 【问题描述】:我有一个类似于通用文件管理器的应用程序。我希望使用 QLPreviewController、UIDocumentInteractionController 等的应用程序中的“打开方式...”功能能够向我的应用程序发送任何文件类型。
我创建了一个文档类型,但是无论“类型”设置为“*”、“public.*”还是类似的组合,我都无法让应用程序在非特定情况下显示(如果例如,我将 UTI 更改为 com.adobe.pdf)。
在 Mac OS X 上,可以将应用设置为所有文件类型的通用查看器 - 这在 ios 上是不可能的吗?
编辑
浏览文档,我发现只有少数原始 UTI 类型,所有其他类型都继承自这些类型
public.item
public.content
public.database
public.calendar-event
public.message
public.contact
public.archive
public.url-name
public.executable
com.apple.resolvable
其中许多显然永远将成为文件的实例。
我可能过于雄心勃勃地尝试创建通配符测试:我尝试了 public.item,它在邮件中的 pdf 文件上工作。由于文档声明 public.item 是“物理层次结构的基本类型。”,这可能意味着这个 是 通配符,即“public.item = *”
最坏的情况,我可以添加项目、内容、数据库和存档,并希望最好。最好的情况,项目涵盖一切。
【问题讨论】:
【参考方案1】:您需要为功能和物理层次结构指定 UTI。对于所有文件(但不包括捆绑包),您可以使用 public.data + public.content。对于所有内容(包括符号链接和文件夹),您将使用 public.item + public.content。
看看 Dropbox.app 是如何做到的:http://www.cocoanetics.com/2013/01/open-in-all-files/
在此处查看我关于尿路感染的文章:http://www.cocoanetics.com/2012/09/fun-with-uti/
【讨论】:
排除捆绑包/目录/系统符号文件,“public.data”还不够吗?【参考方案2】:public.item 适用于我目前尝试过的所有类型。
【讨论】:
public.item
还可以匹配 Apple Events 中的创建者代码等奇怪的东西,当我收到有关我的应用程序在 OS X 10.6 上随机启动的报告时发现。我改用 public.data 解决了这个问题。 (当然,Apple Events 的东西不适用于 iOS……)以上是关于iOS 文档/文件类型关联 - 通配符 UTI?的主要内容,如果未能解决你的问题,请参考以下文章
带有 UIDocumentPickerViewController 的 iOS 自定义 UTI/文件类型
带有 UTI 的 UIDocumentBrowserViewController 错误