我使用NSUbiquitousKeyValueStore在我的应用程序中的设备之间同步首选项。对于我的一小部分用户(大约 0.1%),他们的偏好不会在他们的设备之间同步。保存到的值NSUbiquitousKeyValueStore
可以正确读取,直到应用程序终止,但是当再次启动时,这些值就消失了。
我发现的一个线索是,如果我调用synchronize,它会为这些用户返回 false。这似乎是出现任何问题的唯一可靠迹象。文档指出,此函数将“...如果发生错误,则返回 false。例如,如果应用程序未使用正确的权利请求构建,则此方法返回 false。” 但由于这适用于 99.9% 的用户,因此很难想象这是一个权利请求问题。
我与一位遇到此问题的用户联系,他们报告说他们的 iCloud 帐户状态没有什么异常,而且他们使用的是最新版本的 iOS。
我已尝试侦听didChangeExternallyNotification
并检查各种可能的情况,这些可能NSUbiquitousKeyValueStoreChangeReasonKey
表明存储空间不足,但这些用户似乎都没有触发它们。
是否有任何其他已知原因synchronize
可能返回 false,这可能有助于理解为什么这些用户无法同步他们的偏好?