新的iCloud服务有许多可能的配置。我如何知道我的用户设备是否配置为将拍摄的照片发送到iCloud服务器,而不是仅存储在设备上?
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];
}
});
});
如果您想知道iCloud是否已激活,您可以简单地调用:
NSFileManager *fileManager = [NSFileManager defaultManager];
NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil];
if (cloudURL != nil) {
// iCloud is available
}
这可以给你一个提示,iCloud是否可用。如果您想使用iCloud存储图片,您可以构建自己的东西。我不太确定您计划做什么。