Edit:
Nếu bạn đang nhắm mục tiêu iOS6 trở lên bạn có thể sử dụng [[NSFileManager defaultManager] ubiquityIdentityToken];
. Để biết ví dụ về cách sử dụng, vui lòng tham khảo @Dj S' answer :).
Nó là nhanh hơn và dễ dàng hơn so với các giải pháp ban đầu được dành cho người nhắm mục tiêu iOS5 trở lên
gốc trả lời
Như ghi nhận ở iOS App programming guide - iCloud Storage. Điều đó có thể được kiểm tra bằng cách yêu cầu URL chứa có mặt khắp nơi với trình quản lý file :)
Chừng nào bạn cung cấp một định danh chứa có mặt khắp nơi có giá trị thấp hơn phương pháp nên return 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;
}
Tuy nhiên, tôi đã phát hiện ra rằng URLForUbiquityContainerIdentifier:
có thể mất vài giây lần đầu tiên trong một phiên (tôi đã sử dụng nó trong iOS5 để mọi thứ có thể khác nhau bây giờ). Tôi nhớ sử dụng một cái gì đó như thế này:
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];
}
});
});
giải pháp tuyệt vời. – NSSplendid
Thật không may là liên kết tới tài liệu Apple không hoạt động. Bạn có thể tìm kiếm URLForUbiquityContainerIdentifier tại đây mặc dù: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html – Oscar
Apple liên tục thay đổi vị trí, liên kết được cập nhật. :) – nacho4d