Ответ 1
Edit:
Если вы ориентируетесь на iOS6 или выше, вы можете использовать [[NSFileManager defaultManager] ubiquityIdentityToken];
. Для примера использования см. @Dj S 'ответ:).
Это быстрее и проще, чем оригинальное решение, предназначенное для людей, ориентированных на iOS5 и выше
Оригинальный ответ
Как описано в Руководство по программированию приложений iOS - iCloud Storage. Это можно проверить, задав URL-адрес контейнера ubiquity для диспетчера файлов:)
Пока вы указываете действительный идентификатор контейнера повсеместно, метод должен возвращать YES
- (BOOL) isICloudAvailable
{
// Make sure a correct Ubiquity Container Identifier is passed
NSURL *ubiquityURL = [[NSFileManager defaultManager]
URLForUbiquityContainerIdentifier:@"ABCDEFGHI0.com.acme.MyApp"];
return ubiquityURL ? YES : NO;
}
Однако я обнаружил, что URLForUbiquityContainerIdentifier:
может занять несколько секунд в первый раз в сеансе (я использовал его в iOS5, поэтому теперь все может быть иначе). Я помню что-то вроде этого:
dispatch_queue_t backgroundQueue =
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(backgroundQueue,^{
BOOL isAvailable = [self isICloudAvailable]
/* 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];
}
});
});