【问题标题】:How do ubiquity containers work between iOS and Mac OS X apps?泛在容器如何在 iOS 和 Mac OS X 应用程序之间工作?
【发布时间】:2013-01-26 02:30:34
【问题描述】:

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

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

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

如何正确设置这两个应用程序,以便它们使用同一个通用容器共享和同步所有添加的文件?

【问题讨论】:

    标签: objective-c cocoa-touch cocoa icloud


    【解决方案1】:

    对于我自己的 iOS/Mac 应用程序对,我的 iOS 应用程序的 BundleID 为 com.alexanderwinn.Example,而 Mac 应用程序的应用程序为 com.alexanderwinn.ExampleMac,但它们都共享通用容器 com.alexanderwinn.Example。它们都没有,甚至 Mac 版本都没有基于 Mac BundleID 的通用容器。我是初学者,所以我无法详细说明一切工作和中断背后的原因,但它对我来说很好!

    【讨论】:

      【解决方案2】:

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

      1. 打开您的 Xcode 项目,然后导航到项目目标设置。单击 Capabilities 选项卡以打开项目设置以获得额外的 Apple 服务。
      2. 然后打开 iCloud 选项ON。 Ubiquity Container ID 在您需要与之共享数据的每个应用程序中都应该相同。您与之共享数据的应用程序的捆绑包 ID 不必相同,但它们都需要相同的 Ubiquity 容器 ID 和团队 ID。
      3. 要开始在具有相同 iCloud 容器的所有应用中使用 iCloud,您需要使用您的团队 ID 和容器 ID 创建 URL。苹果很好地总结了这一点:

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


      然后,在 iTunes Connect 中设置一个名为 iCloud Display Set 的东西。这允许您创建一个显示集 ID,然后可以在您的应用程序之间共享该 ID,以便它们可以访问相同的数据。这里有一些有用的链接可以帮助您入门:

      以下是设置 iCloud 显示集的方法:

      1. 转到 iTunesConnect 并打开“管理应用程序”部分
      2. 在页面底部,点击指向 iCloud Display Sets 的链接
      3. 点击Create New添加显示集
      4. 填写必填信息,包括ID:

      然后将其附加到您的应用程序!希望这会有所帮助,祝你好运。

      【讨论】:

      • 所有信息都表明,这只会在您将应用提交到 App Store 时链接您的应用。在开发过程中如何测试 Mac iOS? (我为我的应用添加了一个,Mac->Mac 适用于 iOS->iOS 适用,但不适用于 MaciOS)
      • @kdbdallas 我已经用新信息更新了我的答案。看看吧。
      猜你喜欢
      • 1970-01-01
      • 2012-07-02
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多