我开发了一个支持 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。
请用它来检查您的 iCloud 的状态是否已启用。
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"]);
}
这会告诉你它是开还是关:)