How to detect if the user has iCloud enabled for my app?
I recommend using this instead if you are using key-value and not document storage.
id iCloudToken = [[NSFileManager defaultManager] ubiquityIdentityToken];
if ( iCloudToken != nil) {
// User has enabled icloud in your app...
} else {
// Icloud is not enabled for your app...
}
Now the reason i recommend the method above is that in the new Xcode compiler you can now dictate if you are going to use document storage or not. If you choose to only use key-value storage, the NSFileManager check will fail as you will not have the container identifier defined in the entitlements. However, ubiquityIdentityToken will always exists if the user has allowed your app to run meaning it will always fire true or false if the user has allowed your app access to iCloud.
Please use this to check the status of your iCloud whether it is enabled or not .
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"]);
}
This will tell you whether it is ON/OFF :)