仅使用键值存储检测 iCloud 帐户可用性/更改?
Posted
技术标签:
【中文标题】仅使用键值存储检测 iCloud 帐户可用性/更改?【英文标题】:Detect iCloud account availibility / change using Key-Value store only? 【发布时间】:2015-05-25 02:13:48 【问题描述】:我使用 iCloud Key-Value 存储,没有任何容器(因为我不需要文档)。
所以应用没有在Settings / iCloud / Storage / Manage Storage
列表中列出,只在iCloud / iCloud Drive
列表中,像这样:
我真的很想知道它是打开还是关闭,或者根本可用。
似乎ubiquityIdentityToken
总是nil
,而NSUbiquityIdentityDidChangeNotification
永远不会被调用。
我有一个工作原型,在模拟器中修改了一个滑块,它在设备上得到了更新,一切看起来都很好。即使,如果我询问标识符(在NSUbiquitousKeyValueStoreDidChangeExternallyNotification
回调中),它们始终为空:
NSURL *containerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
NSLog(@"containerURL: %@", containerURL);
NSLog(@"token: %@", token);
// containerURL: (null)
// token: (null)
当我为我的应用关闭 iCloud Drive 时,它会在后台终止。不会调用任何通知,也不会在重新启动时调用。
我应该设置一个我从不使用的文档容器吗?
【问题讨论】:
使用您的代码更新您的问题,以使用通知和获取令牌。如果需要,指出代码在哪里。 关于如何使用它们的文档非常详细,我已经全部通读过了。还有一个通过 KV 存储同步的漂亮工作原型。只有这个是我无法判断它是否启用或不使用上面的工具。我想当有人不使用 iCloud 容器,只使用 KV 存储时,它们不会被调用/填充。 许多 API 都有很好的文档记录,但是这个站点有大量关于这些文档 API 的问题。这并不意味着您的实施没有问题。发布您的代码以确保您没有做错任何事情。 【参考方案1】:打开 iCloud 文档后,我就有了令牌(应用权利也获得了一些新值)。
但即使我在给定应用程序的设备设置中关闭 iCloud Drive (!),ubiquityIdentityToken
现在也会返回值。它不会从 Key-Value 存储中提取更新,仍然设置了令牌。
只有URLForUbiquityContainerIdentifier
关闭时返回 nil,打开时返回 URL。
【讨论】:
你的回答给了我我需要的信息,虽然我没有同样的问题。事实证明,我们可以使用ubiquityIdentityToken
进行比较,以了解在 iCloud 键值同步开始之前,应用程序委托中的 iCloud 键值是否更改了 iCloud 帐户。以上是关于仅使用键值存储检测 iCloud 帐户可用性/更改?的主要内容,如果未能解决你的问题,请参考以下文章