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

时间:2015-05-25 02:13:49

标签: ios objective-c ios8 icloud key-value-store

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

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

enter image description here

我真的想知道它是打开还是关闭,或者根本不可用。

似乎ubiquityIdentityToken总是nilNSUbiquityIdentityDidChangeNotification永远不会被调用。

我有一个工作原型,在模拟器中修改一个滑块,它在设备上得到更新,一切似乎都很好。即使如果我要求标识符(在NSUbiquitousKeyValueStoreDidChangeExternallyNotification回调中),它们总是为空:

NSURL *containerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil];
id token = [[NSFileManager defaultManager] ubiquityIdentityToken];
NSLog(@"containerURL: %@", containerURL);
NSLog(@"token: %@", token);

// containerURL: (null)
// token: (null)

当我为我的应用关闭iCloud Drive时,它会在后台终止。没有任何通知被调用,也没有重新启动。

我应该只是设置一个我永远不会使用的文档容器吗?

1 个答案:

答案 0 :(得分:2)

打开 iCloud Documents 后,我有了令牌(应用权利也获得了一些新值)。

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

关闭时只有URLForUbiquityContainerIdentifier返回nil,打开时返回URL。