iOS 8 - 在应用程序之间共享文档目录

Posted

技术标签:

【中文标题】iOS 8 - 在应用程序之间共享文档目录【英文标题】:iOS 8 - Share Documents Directory Between Apps 【发布时间】:2015-06-13 01:16:31 【问题描述】:

我的团队正在为一个大型组织开发一套内部应用,其中每个应用都需要访问相同的数据。这包括大量用户数据和大约 50MB 将与应用程序 (SQLite) 一起预加载的其他数据,以及可能随时下载的大量图像和音频文件。 ios 8 中是否有任何方法允许这些应用程序访问相同的文件?像共享文档目录这样的东西是理想的。

最初这些应用将在企业许可下在内部发布,但客户最终希望它们在 App Store 上发布。

【问题讨论】:

【参考方案1】:

不,您不能拥有共享文档目录,但您可以拥有可用作文档目录的共享文件夹。创建应用组时Create an identifier for each of your apps in the app group.

然后您可以使用文件管理器使用给定的组标识符获取所需目录的 URL。

let url = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.com.MTC.DataSender")!

这会将 URL 返回到 DataSender 应用程序的目录。应用组中的每个应用都可以访问此目录。所以在你的其他应用程序中你会做同样的事情。

【讨论】:

【参考方案2】:

不,您不能在 iOS 上的应用程序之间共享文档目录。更不用说 Apple 不支持这一点,一个应用程序中的核心数据上的多线程已经有足够的 bug,我认为与多个应用程序共享您的 sqlite 库不是一个好主意。此外,在应用程序之间共享文档(如 android 和 Window Phone 所做的那样)存在潜在的安全问题。我认为这也可能是苹果不让开发人员直接访问其他应用程序文件的原因。

但是,尽管如此,仍然可以在应用程序之间共享数据或文档。你可以看看这两个:UIActivityViewController 和UIDocumentInteractionController。它们可能不完全是您想要实现的目标,但这几乎是迄今为止您在 iOS 上使用 inter-app communication 可以做到的最好的事情。

【讨论】:

以上是关于iOS 8 - 在应用程序之间共享文档目录的主要内容,如果未能解决你的问题,请参考以下文章

iOS 8 小部件,在应用程序组之间向前和向后共享数据

是否可以将 iOS 文件共享功能限制为文档目录中的子文件夹?

在 Mac 和 iOS 应用之间共享应用内购买

NSUserDefaults 线程在 IOS 上的扩展之间共享数据是不是安全?

iOS 和 macOS 应用程序之间的 iCloud 核心数据共享不起作用

在 NSDocument 和 UIDocument 之间共享代码