2011-11-05 59 views
6

新的iCloud服务有多种可能的配置。我怎么知道我的用户设备是否配置为将拍摄的照片发送到iCloud服务器,而不是将它们存储在设备上?iOS - 如何知道是否启用iCloud照片传输功能

+0

你说的是照片流或者是你在谈论的iCloud备份? –

+0

@MichaelDautermann:我在谈论照片流,但是阅读您的评论,我正在讨论任何可能以可读方式将iPhone照片发送到iCloud的意思,所以我猜想备份就在这个范围内。 – Oliver

回答

1

如果你想知道,如果iCloud中被激活,你可以简单地调用:

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

这可以给你一个暗示,如果icloud是可在所有。如果你想使用iCloud来存储图片,你可以创建自己的东西。我不确定你打算做什么。

+0

我只是想显示通知,如果与我的应用拍摄的照片将被存储在iCloud上。 – Oliver

1

只要你在下面提供的方法有效普及的容器标识应返回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]; 
     } 
    }); 
}); 
相关问题