在iOS中管理文件

最近,我一直在iOS中使用“文件”,与Android相比有点复杂。 因此,在这篇文章中,我想介绍如何为用户从我们的应用程序预览,打开,共享,保存或打印来自远程URL的文件


首先,这是您需要从Apple提供的UIDocumentInteractionController文档中了解的内容。

使用此类提供用于预览,打开,复制或打印指定文件的适当的用户界面。

显示其用户界面后,文档交互控制器将处理支持文件预览和菜单显示所需的所有交互。

您还可以使用委托来参与所显示界面中发生的交互。


在文件可以出现在“文件”应用中之前,您必须指示您的应用支持“ 就地打开和已启用文件共享” 。 这些选项是使用Info.plist文件中的键配置的。 第一个键是UIFileSharingEnabled ,它使iTunes可以共享“文档”文件夹中的文件。 第二个键是LSSupportsOpeningDocumentsInPlace ,它授予本地文件提供者对Documents文件夹中文件的访问权限。 将这些键添加到Info.plist并将其值设置为YES

  • UIFileSharingEnabled:应用程序支持iTunes文件共享
  • LSSupportsOpeningDocumentsInPlace:支持就地打开文档

在转到代码之前,这里需要了解一些UIDocumentInteractionController实例属性和方法。

实例属性

  1. url标识本地文件系统上目标文件的URL。 (

请注意, url属性需要本地文件系统上文件的URL,而不是 文件 的远程URL ,即“ https://…”。如果您仍然提供远程URL来测试会发生什么,请告诉我,应用程序将崩溃

***由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“ UIDocumentInteractionController:无效的方案https”。 仅支持文件方案。’***

2. uti目标文件的类型。

此属性的值用于确定哪些应用程序能够打开文档。

3. name目标文件的名称。

此属性包含没有任何先前路径信息的文件名。 此属性的默认值是从url属性中的路径信息派生的。

实例方法

  1. presentPreview(animated :)方法

此方法异步显示文档预览。 文档交互控制器响应于适当的用户交互而自动关闭文档预览。 您也可以使用dismissPreview(animated:)方法以编程方式关闭预览。


情况1:假设您在远程URL上有一些文件,您想为用户下载该文件,并允许他们在他们希望的任何地方存储/共享。

请注意,用户iPhone中所有支持目标文件类型的应用程序都将显示在操作表的应用程序列表中。 用户可以将文档保存到iCloud,投递箱,本地文件,相册(如果支持目标文件类型)或他/她希望的任何位置! 😃

情况2:假设您在用户iPhone的某些应用中获得了一些文件,您希望他们在他们希望存储/共享的任何地方

在上面的代码中,您不需要在tempURL中存储任何内容,您只需要在url属性中提供适当的文件路径,为“ com.adobe.pdf”更正uti和文件名即可。 然后,使用presentPreview(animated:)方法,您可以轻松进行👍🏼


为了撰写这篇文章,我从网上的一些文章中获得了参考。 我想在这里列出他们

info.plist中所需的权限

苹果官方文档


我在这里共享了此演示的源代码

mansi-cherry / iOSHowTo-s

iOSHowTo-s –该存储库包含使用Swift的iOS中的不同“操作方法”

github.com

我真的希望这篇文章有用useful

祝你今天愉快!

编辑 :在这里找到第二部分☘️