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?的主要内容,如果未能解决你的问题,请参考以下文章

如何确定文件的文件类型(文档类型/UTI)

带有 UIDocumentPickerViewController 的 iOS 自定义 UTI/文件类型

iOS UTI(统一类型标识)

带有 UTI 的 UIDocumentBrowserViewController 错误

如何将excel文件类型(xlsx)与iPhone应用程序相关联

获取我的应用通过 openURL 打开的文件的 URL: