ubiquity容器如何在iOS和Mac OS X应用程序之间工作?

时间:2013-02-11 00:58:03

标签: objective-c cocoa-touch cocoa icloud

我有这两个应用程序,一个iOS和一个Mac OS X,每个都有不同的Bundle ID。

为了让两个应用程序同步和共享文件,我必须将iOS应用程序的普遍容器添加到Mac OS X应用程序中的普遍容器列表中。

在Mac OS X应用程序的Xcode摘要中,我无法将自己的Bundle ID添加为无处不在的容器。 Mac OS X应用程序将以自己的普遍性存储新添加的文件,因此iOS应用程序无法访问它们。

如何正确设置这两个应用,以便他们使用相同的普遍容器共享和同步所有添加的文件?

2 个答案:

答案 0 :(得分:1)

对于我自己的iOS / Mac应用程序对,我刚刚使用BundleID com.alexanderwinn.Example和带有com.alexanderwinn.ExampleMac的Mac应用程序获得了我的iOS应用程序,但它们都共享了无处不在的容器com.alexanderwinn.Example。他们中的任何一个,甚至Mac版本,都没有基于Mac BundleID的普遍容器。我是初学者,所以我不能完全详细说明一切工作和休息背后的原因,但它对我来说工作正常!

答案 1 :(得分:1)

要允许多个应用访问同一个数据存储/普遍存储容器,您需要做一些事情。首先,您需要打开Xcode项目并按照这些说明进行操作(官方Apple document here):

  1. 打开Xcode项目,然后导航到项目目标设置。单击功能选项卡以打开额外Apple服务的项目设置。 Xcode 5.0 Project Capabilities
  2. 然后转动iCloud选项开启。 Ubiquity Container ID应与您需要与之共享数据的每个应用程序中的相同。您与之共享数据的应用程序包ID不必相同,但它们都需要相同的Ubiquity容器ID和团队ID。 Xcode iCloud project ubiquity container
  3. 要在所有使用相同iCloud容器的应用中开始使用iCloud,您需要使用您的团队ID和容器ID创建网址。 Apple很好地总结了这一点:

      

    要检索普遍容器的URL,必须将完全限定的字符串传递给NSFileManager方法URLForUbiquityContainerIdentifier:。也就是说,您必须传递完整的容器标识符字符串,其中包含您在.entitlements属性列表文件中看到的团队ID。您可以将nil传递给此方法以检索列表中第一个容器的URL。


  4. 然后,在iTunes Connect中设置一个名为iCloud Display Set的内容。这允许您创建一个显示集ID,然后可以在您的应用之间共享,以便他们可以访问相同的数据。以下是一些有用的链接,可以帮助您入门:

    以下是如何设置iCloud显示集:

    1. 转到iTunesConnect并打开“管理应用程序”部分
    2. 在页面底部,点击指向iCloud Display Sets的链接
    3. 点击Create New添加展示广告集
    4. 填写所需信息,包括ID:
      enter image description here
    5. 然后将其附加到您的应用中!希望这有帮助,祝你好运。