Если вы укажете действительный идентификатор контейнера вездесущности, указанный ниже метод должен вернуть 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];
}
});
});