我可以通过 Mac 将文件添加到 iCloud 并在 iOS 应用程序中使用该文件吗

Can I add a file to iCloud via my Mac and use the file within an iOS application

我正在使用 Xcode 6.3.2 为 iOS 8.3 开发一个应用程序,它需要从用户的 iCloud 帐户中提取 CSV 文件。这些电子表格将由一个单独的系统生成并保存到用户的 iCloud Drive 文件夹中(将有多个电子表格,在应用程序中用户将键入一个关键字符串来确定应该访问哪个电子表格),这样做的方法将处理我的客户,除非不能以特殊方式完成,否则不相关。应用程序本身需要获取一个密钥字符串并在用户的 iCloud 驱动器中搜索该文件,如果存在则获取文件的内容,如果可能,将其保存在本地以便即使 iCloud 驱动器不可用也可以访问。

当前应用程序使用应用程序包中的本地 CSV 文件(我已将其复制到我的 Xcode 项目中),所以现在我需要集成 iCloud 功能。

已解决: 我已经阅读了各种教程,向您展示了如何上传和下载 to/from iCloud Drive,尽管我仍然对它的工作原理有点困惑。这让我想到了第一个问题。

  1. 我的应用程序是否只能访问应用程序本身保存到 iCloud 的文件。或者,例如,如果我通过我的 iMac 上的 Finder 将 CSV 文件添加到 iCloud Drive,我是否可以从我的应用程序中访问这些文件,如果可以,我将如何处理?

我目前假设问题一的后者是正确的,但我现在担心我误解了它的工作原理(因此问题一)。我已将应用程序设置为使用 iCloud - 它成功地获得了普遍性 URL 但是在查询任何 CSV 文件时它 returns 什么都没有。我目前正在使用模拟器并且已经读到它应该可以工作,尽管其他消息来源表明它不会,在模拟器上我已经使用适当的 Apple ID 登录并启用了 iCloud Drive - 但是我放在 iCloud Drive 文件夹中的文件在我的 iMac 上不可见。关于问题 2...

  1. iCloud 文档存储是否可以在 iOS 模拟器上运行,如果可以,我需要做些什么来启动同步以获取我放在 iMac 中的 CSV 文件iCloud Drive 文件夹。

编辑: 我做了一些进一步的挖掘并设法让 iCloud 在实际设备上工作 - 我想这回答了问题 2:iCloud 文档存储无法正常工作在 iOS 模拟器上。我还看到教程或屏幕截图显示我对问题 1 的假设是正确的。

现在,当我在 iPad 上转到“设置”>“iCloud”>“存储”>“管理存储”时,我可以看到我的应用程序将文档存储在 iCloud 中,当我转到“系统偏好设置”> iCloud > 管理。我可以看到数据存在,但是当我导航到 Finder > iCloud Drive 时,我看不到我的应用程序文件夹。我需要做的是将文件拖放到我 Mac 上 iCloud Drive 中我的应用程序文件夹中,以便可以通过我的应用程序读取它们。我读到,只需将 'Documents' 文件夹附加到我无处不在的 URL 的末尾,就可以使它在 finder 中可见,但这没有用。这让我想到了问题 3:

  1. 我需要做什么才能使我的应用程序特定的 iCloud 文件夹在 Mac 的 Finder window 中的 iCloud Drive 文件夹中可见?

这花了一些时间,但我自己设法解决了这个问题,我会 post 为其他遇到此问题的人提供解决方案。

  1. 应用程序将创建自己的 iCloud 容器,管理 iCloud 文档时可见,但默认情况下在 Mac 或 icloud.com 上的 iCloud Drive 文件夹中不可见.通过向 info.plist 文件添加一些内容,应用程序的 iCloud 文件夹可以在 Finder 中可见(参见答案 3)。

  2. 在模拟器上测试时,我根本看不到任何同步的文档,在移动到 iPad 之后,我可以看到来自我的应用程序和其他应用程序(例如 TextEdit)的文档.这让我相信 iCloud 功能在 iOS 模拟器上无法正常工作。也许它可以通过手动将文件添加到适当的容器文件夹来工作 - 但实际上这还不足以进行全面测试。

  3. 如上所述,制作应用程序的 iCloud 文件夹 public 需要向 info.plist 文件添加一些内容。在 Xcode 6.3.2 中,这将如下所示(设置模糊的包标识符和 ContainerName 并分别递增包版本和包版本字符串):