iCloud的键值店不承认第一次启动(iCloud KeyValue store not recog

2019-07-30 10:37发布

我的应用程序使用的iCloud(键值存储)同步多个设备之间的唯一的ID。 该作品接受的点是它真的有工作,在首批推出的应用程式。 它看起来像设备尚不熟悉从iCloud中首先推出的值,应用程序安装,并已运行一段时间之后。

我检查了在应用程序的主视图中viewDidLoad中功能的iCloud值。

所以,我的问题:

  • 这是预期的行为?
  • 如果是的话,是有另一种解决方案?
  • 难道是从Xcode中运行时,不出货的版本,这只是一个问题的情况下? 如果是这样,如何测试?

谢谢!

碧玉

Answer 1:

当你第一次运行的iCloud功能的应用程式它必须从苹果服务器把所有的数据。 它需要这样做的时间取决于很多事情喜欢什么样的网络您目前所(EDGE,3G,GPRS,WLAN)。 这也取决于iCloud的服务器目前有多少流量必须处理这样的请求到iCloud的服务器可能需要几秒钟,不管你是什么类型的网络连接。

概括起来:是的,这听起来完全正常。

如果您运行的应用程序依赖于这些设置考虑实施一个“等待”或“装载”的观点,只要它需要的应用程序来执行初始同步,并从云中加载所有需要的数据在屏幕上停留。 为了不阻塞UI永远也实现该视图超时(如果不是X秒内装载的iCloud数据,关闭该视图并通知用户)。



Answer 2:

我曾在NSUbiquitousKeyValueStoreDidChangeExternallyNotification不触发第一个发射后安装,不管多久,我等了类似的问题。 设置在NSUBiquitousKeyValueStore初始密钥似乎解决这个问题。

加上观察员默认存储后,我立即拨打:

[[NSUbiquitousKeyValueStore defaultStore] setString:@"testValue" forKey:@"testKey"];
[[NSUbiquitousKeyValueStore defaultStore] synchronize];

我用实际数据我要同步不同的密钥(即不密押 )。



Answer 3:

你有没有保证NSUbiquitousKeyValueStore就已经完成了它的第一个同步为您的应用程序启动的第一次。 (事实上​​,在iOS 5中,它通常作为开始您启动您的应用程序首次同步)。

有没有办法知道,如果第一初始同步已经发生,正在进行或已经完成。 您可以(其实应该 )订阅NSUbiquitousKeyValueStoreDidChangeExternallyNotification 。 诀窍是,如果你的小店是的iCloud服务器上的空,你会不会在初始同步之后得到任何通知(因为你当地的商店是空的,云存储为空为好,真的没什么初始后改变“外部”同步…)

通常情况下,你不应该依赖于初始同步正在进行。

是在发射乐观主义者,即使你的商店是空的,把你的价值观(例如,您的唯一ID)的时候了。 如果初始同步发生的同时或之后,且已存在服务器上的一些价值,当地的价值将被重置为服务器值,你会得到NSUbiquitousKeyValueStoreDidChangeExternallyNotification与通知NSUbiquitousKeyValueStoreInitialSyncChange原因。

最后,如果你真的想知道关于初始同步正在完成与否,请提交到bugreport.apple.com的错误,并解释为什么你真的很需要那。



文章来源: iCloud KeyValue store not recognized on first launch