公司是做文件工具类的 App,因此在 Apple 发布新的 iOS 11 后,我司加入了需求,需要允许 App 沙盒内的文件使用 Files 管理,现找到的资料不多,除了苹果的官方文档外,这篇是一个简单入门的博客来了解如何接入 Files。
让你的 App 出现在 Files 里面
在你的 App 内的文件可以出现在 Files 里面之前,你必须保证你的 App 是支持 Files 中打开并且可以分享的。这需要你在你的 App 内的 Info.plist 中添加两个键值对,第一个是 UIFileSharingEnabled,这个可以使 iTunes 分享你文件夹内的内容;第二个是 LSSupportsOpeningDocumentsInPlace ,它保证了你文件夹内本地文件的获取权限,你需要将这两个键值对的值设置为 YES ,如下:
info-plist.png然后你再次运行你的程序,就可以在 Files 里面 我的 iPhone 中看到以你项目名为文件夹名的文件夹(如果你在 Files 中看不到 我的 iPhone 这一项,你只需要在照片中选中一张照片共享到 Files 里面,就可以看到这一项了)
Files 里面的文件
在 Files 里面的文件夹,会将沙盒内 Documents 文件夹内的所有文件都显示出来,因此苹果建议在此文件夹中只存放用户创建的文件,如果将 App 创建的文件也放到这个目录下的话,会使这个文件夹看起来很杂乱。
files-with-saves.png![Uploading IMG_323500CABE8A-1-800x600_576253.jpg . . .]
如何隐藏重要的文件
我们应该如何存储 App 创建的文件呢?这个取决于它的重要性,如果它不是那么重要的,我们可以将它们存放在 cachesDirectory 或者是 temporaryDirectory 文件夹下面;如果它是重要的文件,大多数情况下,我们是需要将它们备份在 iCloud 上的,这样的文件我们建议将它存放在 applicationSupportDirectory 目录下,如下:
// let documents = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let support = FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask).first!
Application Support directory 文件夹内的内容可以备份在 iCloud 上,同时不会出现在 Files App 内。
这个是简单的将你 App 内的文件在 Files 中展示出来,具体点击了某个文件之后的操作,是需要在 App 内 BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
方法中根据产品经理的需求去实现的。
另一种方法
这是一种简单的接入 Files 的方法,此时你的所有文件都是在 我的 iPhone 里面的文件夹中展示,还有一种是与 我的 iPhone 同级的展示,如下图:
如果想要像 OneDrive 或者是 DropBox 这样的 App 一样直接打开 Files 就可以看到你们的 App ,这就需要我们在自己的 App 中添加 FileProviderExtension ,这样就可以实现上面这样的需求,具体怎么操作,我们下一篇博客会详细说下的。
网友评论