FileProvider框架详细解析 (一) —— 基本概览(一)

版本记录

版本号 时间
V1.0 2018.01.23

前言

今天翻阅苹果的API文档,发现多了一个框架就是FileProvider,看了下才看见是iOS11.0新添加的框架,这里我们就一起来看一下框架FileProvider。

FileProvider

实施File Provider扩展,以便其他应用程序可以访问您的包含应用程序存储和管理的文档和目录。

看一下框架的基本信息

FileProvider框架详细解析 (一) —— 基本概览(一)_第1张图片

Overview

如果您的应用主要专注于存储和管理用户文档,则可以实现File Provider扩展,以便用户在使用其他app时可以访问其内容。

File Provider扩展:

  • 根据需要创建你需要下载的远程文件的占位符。
  • 拦截来自主机应用程序的协调读取,以便在读取之前从远程服务器下载或更新文件。
  • 在主机应用程序进行协调写入后触发通知,以便扩展程序可以根据需要将更改上传到远程服务器。
  • 枚举存储的文档和文件夹。
  • 对存储的文档和文件夹执行操作(如导入,移动,重命名或删除项目)。

其他app使用 UIDocumentBrowserViewController
或UIDocumentPickerViewController类访问存储的文档。 这些类提供了一个标准的用户界面,用于浏览和存储文档和文件夹。 但是,您可以使用FileProviderUI框架将自定义操作添加到浏览器的上下文菜单中。

您也可以为您的file provider定义自定义消息接口。 使用这些接口来添加基础API不提供的功能。 有关更多信息,请参阅NSFileProviderService。


Does Your App Need a File Provider? - 你的App需要一个File Provider吗?

一般来说,只有当您的App提供对存储在远程服务器上的文档的访问时,才能实现File Provider扩展。 您不需要File Provider扩展提供对本地存储的文档的获取。

要让其他App访问您的文档目录中的文件,只需在应用程序的Info.plist文件中设置正确的键。 您可以设置UISupportsDocumentBrowser键(用于基于文档浏览器的应用程序),也可以设置UIFileSharingEnabled和LSSupportsOpeningDocumentsInPlace键。

这些键可以使其他应用程序打开并编辑Documents目录的内容。 您的文件也出现在Files app和文档浏览器中。 有关更多信息,请参阅UIDocumentBrowserViewController类。


Supporting Drag and Drop - 支持拖放

如果您的应用程序充当远程文档的拖动源,请重写您的NSItemProvider子类的registerFileRepresentationForTypeIdentifier:fileOptions:visibility:loadHandler:方法,并返回正在拖动的项目的URL。 此URL是您的扩展程序的URLForItemWithPersistentIdentifier:方法返回的值。 该URL可能引用本地文件或(如果您没有本地副本)到文件的占位符。

如果URL指向一个占位符,那么系统会调用您的File Provider扩展的startProvidingItemAtURL:completionHandler:方法,使您有机会下载该文件。


Topics

1. First Steps

  • NSFileProviderExtension
    • File Provider 扩展的主类。
  • NSFileProviderManager
    • 一个管理器对象,用于从你的app或File Provider扩展中与文件提供程序进行通信。

2. Provided Items

项目提供有关由您的文件提供程序管理的文档和文件夹的信息。

  • NSFileProviderItem
    • File Provider扩展管理的项目。
  • NSFileProviderItem

    • 定义由File Provider扩展管理的项目的属性的协议。
  • NSFileProviderItemIdentifier

    • File Provider扩展管理的item的唯一标识符。
  • NSFileProviderItemCapabilities

    • 一个item的能力,定义了用户在文档浏览器中执行的操作。

3. Content and Change Tracking

  • Content and Change Tracking
    • 创建枚举器来指定file provider中的内容,并且跟踪那个内容的改变。

4. Compatibility

  • Creating File Providers for Multiple Versions of iOS
    • 创建不同版本的iOS的File Provider扩展。

5. Errors

  • NSFileProviderErrorCode

    • File Provider扩展引起的错误码。
  • NSFileProviderErrorDomain

    • 由File Provider扩展引发的错误域
  • NSFileProviderErrorCollidingItemKey

    • 从文件名碰撞错误的userInfo属性访问现有项目的key。
  • NSFileProviderErrorNonExistentItemIdentifierKey

    • 从NSFileProviderErrorNoSuchItem错误的userInfo属性获取标识符的key。

后记

本篇已结束,后面更精彩~~~

FileProvider框架详细解析 (一) —— 基本概览(一)_第2张图片

你可能感兴趣的:(FileProvider框架详细解析 (一) —— 基本概览(一))