【问题标题】:iCloud can't share data between two appsiCloud 无法在两个应用程序之间共享数据
【发布时间】:2014-03-14 02:48:57
【问题描述】:

我正在使用 NSUbiquitousKeyValueStore 将数据从 iOS 应用程序 A 存储到 iCloud,但我无法在我的 iOS 应用程序 B 上获取任何对象。但是我可以在我的 iOS 应用程序 A 上获取对象。 两个应用程序具有相同的团队 ID,并且都具有相同的 Ubiquity 容器标识符。 我通过 XCode 5 添加了 iCloud 功能,它自动创建了权利文件。 我还为两个 App ID 打开了 iCloud 选项。

这是我从 App A 设置数据的方式:

[[NSUbiquitousKeyValueStore defaultStore] setObject:value forKey:key];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];

这是我在 App B 上获取数据的方式:

[[NSUbiquitousKeyValueStore defaultStore] synchronize];
[[NSUbiquitousKeyValueStore defaultStore] objectForKey:key];

我不知道这是否重要,但我在调试模式下运行这两个应用程序。我是否必须在启用 iCloud 的 iTunes 上创建这两个应用程序?

谢谢!

【问题讨论】:

  • 我对键值存储没有任何经验,所以我可能不应该发表评论,但我确实注意到似乎没有任何地方可以输入 KV 存储的共享标识符。如果您的应用具有不同的 bundle id,它们如何共享同一个 KV 存储?
  • Drew 谢谢你的评论,它没有答案,但它帮助我找到了解决这个问题的方法。

标签: ios share icloud nsubiquitouskeyvaluestore


【解决方案1】:

如果这是 Xcode 9 中的一个新事物,我想知道,但如果你转到 Capabilities 选项卡并在那里打开 iCloud 后,你可以选择一个容器或创建一个容器。如果您的所有应用程序都具有此处指定的相同容器,您可以通过文件系统或 Core Data 备份您的数据,它们都可以访问 iCloud 中的相同数据。我知道这是 100% 正确的,因为我已经做到了,而且效果很好。

【讨论】:

    【解决方案2】:

    这里是link to documentation。查找“为多个应用程序配置通用键值存储”

    【讨论】:

      【解决方案3】:

      解决了!因此,要在具有相同团队 ID 的两个不同应用程序之间共享键值存储,我必须将权利文件中的 iCloud 键值存储更改为在两个应用程序中相同。 默认情况下,该值为 $(TeamIdentifierPrefix)$(CFBundleIdentifier),我将其更改为 $(TeamIdentifierPrefix)my.company.AppA。

      希望对某人有所帮助 =)

      【讨论】:

        猜你喜欢
        • 2012-02-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-25
        • 2018-10-16
        • 1970-01-01
        相关资源
        最近更新 更多