我开发了一个支持iCloud的iPhone应用程序,但是我遇到的问题是,即使用户关闭了我的应用程序的iCloud备份,它仍然会在iCloud上备份并在我的其他设备上反映更改。因此,我想知道如何判断我的应用程序是否启用了iCloud。
这是针对应用程序而不是设备的,如果设备已启用iCloud但我的应用程序被关闭,则不应进行任何备份。
id iCloudToken = [[NSFileManager defaultManager] ubiquityIdentityToken];
if ( iCloudToken != nil) {
// User has enabled icloud in your app...
} else {
// Icloud is not enabled for your app...
}
现在我推荐上面的方法的原因是,在新的Xcode编译器中,您现在可以指定是否使用文档存储。如果您选择仅使用键值存储,则NSFileManager检查将失败,因为您没有在授权文件中定义容器标识符。但是,如果用户允许您的应用程序运行,则ubiquityIdentityToken将始终存在,这意味着如果用户已允许您的应用程序访问iCloud,则它将始终触发true或false。
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *iCloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];
NSLog(@"%@", [iCloudURL absoluteString]);
if(iCloudURL){
NSUbiquitousKeyValueStore *iCloudStore = [NSUbiquitousKeyValueStore defaultStore];
[iCloudStore setString:@"Success" forKey:@"iCloudStatus"];
[iCloudStore synchronize]; // For Synchronizing with iCloud Server
NSLog(@"iCloud status : %@", [iCloudStore stringForKey:@"iCloudStatus"]);
}