Iphone iOS-如何知道iCloud照片传输功能是否已启用

Iphone iOS-如何知道iCloud照片传输功能是否已启用,iphone,image,settings,ios5,icloud,Iphone,Image,Settings,Ios5,Icloud,新的iCloud服务有许多可能的配置。我如何知道我用户的设备是否配置为将拍摄的照片发送到iCloud服务器,而不是仅存储在设备上?如果您想知道iCloud是否已激活,只需拨打: NSFileManager *fileManager = [NSFileManager defaultManager]; NSURL *cloudURL = [fileManager URLForUbiquityContainerIdentifier:nil]; if (cloudURL != nil)

新的iCloud服务有许多可能的配置。我如何知道我用户的设备是否配置为将拍摄的照片发送到iCloud服务器,而不是仅存储在设备上?

如果您想知道iCloud是否已激活,只需拨打:

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

这可以给你一个提示,如果iCloud是可用的。如果你想用iCloud存储图片,你可以自己制作。我真的不确定你打算做什么。

只要你在下面给出一个有效的通用容器标识符,方法应该返回

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

- (BOOL) iCloudIsAvailable
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSURL *ubiquityURL = [fileManager URLForUbiquityContainerIdentifier:UbiquityContainerIdentifier];
    return (ubiquityURL) ? YES : NO;
}
但是,我发现在会话中第一次调用
URLForUbiquityContainerIdentifier:
可能需要一些时间(几秒钟)。因此,请确保您在后台调用此选项,以避免临时阻塞UI:

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备份?@MichaelDautermann:我说的是照片流,但阅读你的评论,我指的是任何可能以可读方式将iPhone照片发送到iCloud的方法,所以我想备份就在这个范围内。我只想显示一个通知,说明我的应用程序拍摄的照片是否将存储在iCloud上。