iOS - Как узнать, включена ли возможность передачи фотографий iCloud - PullRequest
6 голосов
/ 05 ноября 2011

Новый сервис iCloud имеет много возможных конфигураций. Как я могу узнать, настроено ли устройство моего пользователя для отправки снятых фотографий на сервер iCloud вместо того, чтобы хранить их только на устройстве?

Ответы [ 2 ]

1 голос
/ 17 июля 2012

Если вы укажете действительный идентификатор контейнера вездесущности, указанный ниже метод должен вернуть YES:

static NSString *UbiquityContainerIdentifier = @"ABCDEFGHI0.com.acme.MyApp";

- (BOOL) iCloudIsAvailable
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *ubiquityURL = [fileManager URLForUbiquityContainerIdentifier:UbiquityContainerIdentifier];
    return (ubiquityURL) ? YES : NO;
}

Однако я обнаружил, что для вызова URLForUbiquityContainerIdentifier: может потребоваться время (несколько секунд) в первый раз за сеанс. Итак, просто убедитесь, что вы вызываете это в фоновом режиме, чтобы временно не блокировать пользовательский интерфейс:

dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue,^{
    BOOL isAvailable = [self iCloudIsAvailable]
    /* change to the main queue if you want to do something with the UI. For example: */
    dispatch_async(dispatch_get_main_queue(),^{
        if (!isAvailable){
            /* inform the user */
            UIAlertView *alert = [[UIAlertView alloc] init...]
            [alert show];
            [alert release];
        }
    });
});
1 голос
/ 19 декабря 2011

Если вы хотите узнать, активирован ли iCloud, вы можете просто позвонить:

 NSFileManager *fileManager = [NSFileManager defaultManager];   
 NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];   
 if (cloudURL != nil) {   
    // iCloud is available
 }

Это может дать вам подсказку, если iCloud вообще доступен. Если вы хотите использовать iCloud для хранения изображений, вы можете создавать свои собственные вещи. Я не совсем уверен, что вы планируете делать.

...