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

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

你是在谈论照片流还是在谈论iCloud备份? - Michael Dautermann
@MichaelDautermann:我在谈论照片流,但是看了你的评论,我想我在谈论任何可以以可读方式将iPhone照片发送到iCloud的方法,所以我猜备份也在这个范围内。 - Oliver
2个回答

1
只要您在下面提供一个有效的Ubiquity容器标识符,该方法就应返回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];
        }
    });
});

1

如果您想知道iCloud是否已激活,您可以简单地调用:

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

这可以给你一个提示,iCloud是否可用。如果您想使用iCloud存储图片,您可以构建自己的东西。我不太确定您计划做什么。


我只想在我的应用程序拍摄的照片将要存储在iCloud上时显示通知。 - Oliver

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接