仅使用键值存储检测 iCloud 帐户可用性/更改?

Detect iCloud account availibility / change using Key-Value store only?

我使用 iCloud 键值存储,没有任何容器(因为我不需要文档)。

因此该应用未列在 Settings / iCloud / Storage / Manage Storage 列表中,仅列在 iCloud / iCloud Drive 列表中,如下所示:

我真的很想知道它是打开还是关闭,或者是否可用。

似乎 ubiquityIdentityToken is always nil, and 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 时,它​​会在后台终止。没有调用任何通知,也没有在重新启动时调用。

我是否应该简单地设置一个我从未使用过的文档容器

打开 iCloud 文档,我有令牌(应用程序权利也获得了一些新值)。

但是 ubiquityIdentityToken 现在 returns 值,即使我在给定应用的设备设置中关闭 iCloud Drive (!)。它不会从键值存储中提取更新,仍然设置了令牌。

OFF时只有URLForUbiquityContainerIdentifier returns nil,ON时URL。