为什么我们的应用程序不能在 iCloud 中存储简单的键/值对?



我已经为iCloud使用配置了适当的权限,在为iCloud设置的配置文件下,以及与此配置文件相关联的开发人员配置文件。

应用程序标识符匹配配置文件(com.ourcompany.ourproduct)中指定的标识符。当构建应用程序时,我没有得到任何错误。

iCloud在我的手机上是启用的,并且正在工作(从我的日历,联系人和书签更新中可以看出)。

然而这失败了(localID是一个有效的NSString):

       NSUbiquitousKeyValueStore* iCloudStore = [NSUbiquitousKeyValueStore
defaultStore];
       [iCloudStore setString:localID forKey:@"ourKey"];

如果我在此之后调用synchronize,它返回NO。如果我允许足够的发生更新的时间,随后尝试检索数据的时间仍然失败。

你知道罪魁祸首是什么吗?

谢谢!

在模拟器中,nsubbiquitouskeyvaluestore只会将值存储在磁盘上,甚至不会尝试同步任何内容。

在设备上,同步通常会失败,因为您的kvstore-identifier权限设置不正确,但您应该在控制台中看到错误日志。

是否在模拟器中运行?iCloud同步似乎不能在模拟器上运行,只能在设备上运行。除此之外,您的代码看起来还不错。我希望它能起作用。

我还注意到,我甚至可以在设置权限之前存储和检索密钥。我假设权利只是允许你链接一个键值存储到你的应用程序ID,这样你公司的多个设备或多个应用程序可以共享一个存储。

知道了这一点,你可以尝试完全删除你的权利中对iCloud的引用,看看这是否有效。仅供测试使用

最新更新