如何在只使用NSUbiquitousKeyValueStore时编程检测用户设备上是否启用了iCloud?
我正在使用NSUbiquitousKeyValueStore
将一些偏好数据同步到iCloud。 我发现如果用户在“设置应用程序”中禁用了iCloud的“文档&数据”项, NSUbiquitousKeyValueStore
就无法将其数据同步到iCloud。 所以,我想先检查一下,如果这个设置是打开的。search结果后,我发现这个代码片段:
NSURL *ubiq = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; NSLog(@"url=%@",ubiq); if (!ubiq) { UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; [av show]; return; }
我想知道的是,这是否是检测的唯一方法,即使我只是使用NSUbiquitousKeyValueStore
(而不是iCloud文档存储)。 有更好的select吗?
基本上, NSUbiquitousKeyValueStore
始终可用,即使用户没有iCloud帐户(在这种情况下, NSUbiquitousKeyValueStore
只是一个简单的本地存储)。 所以一般来说,如果有一个configuration好的iCloud帐户,您不需要问自己或用户。
如果你确实想知道,在iOS 5中,唯一的解决scheme就是你提到的那个。
我不知道文件是否已经更新,但苹果现在说:
要确定iCloud是否可用,尤其是在启动时,请检查ubiquityIdentityToken属性的值
对于ubiquityIdentityToken
和URLForUbiquityContainerIdentifier
请参阅URLForUbiquityContainerIdentifier
。
还要注意的是,苹果在说URLForUbiquityContainerIdentifier
可能比较慢,而且检查ubiquityIdentityToken
是比较快的。
这是针对iOS6及更高版本的。