Search code examples
iosdetecticloudnsubiquitouskeyvaluestore

How to programmatically detect if the iCloud is enabled on user's device when only use NSUbiquitousKeyValueStore?


I am using NSUbiquitousKeyValueStore to sync some preference data to iCloud. I found that if the user disable "Document & Data" item of iCloud in "Setting App", NSUbiquitousKeyValueStore can not synchronize its data to iCloud. So, I want to first check if this setting is switched on. I found this Code snippet:

    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;

    }

What I want to know is whether this is the only way to detect, even if I just use NSUbiquitousKeyValueStore (not iCloud document storage). Is there a better alternative?


Solution

  • Basically, NSUbiquitousKeyValueStore is always available, even if the user does not have an iCloud account (in this case, NSUbiquitousKeyValueStore is just a simple local storage). So in general, you don't need to ask yourself or the user if there is a configured iCloud account.

    If you really want to know for sure, in iOS 5, the only solution is the one you're mentioning.