【问题标题】:How to programmatically detect if the iCloud is enabled on user's device when only use NSUbiquitousKeyValueStore?仅使用 NSUbiquitousKeyValueStore 时,如何以编程方式检测用户设备上是否启用了 iCloud?
【发布时间】:2012-06-15 22:08:39
【问题描述】:

我正在使用NSUbiquitousKeyValueStore 将一些偏好数据同步到 iCloud。我发现如果用户在“设置应用程序”中禁用 iCloud 的“文档和数据”项,NSUbiquitousKeyValueStore 无法将其数据同步到 iCloud。所以,我想先检查一下这个设置是否打开。我找到了这个代码sn-p:

    NSURL *ubiq = [[NSFileManager defaultManager] 
                   URLForUbiquityContainerIdentifier:nil];
    NSLog(@"url=%@",ubiq);
    if (!ubiq) {
        UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
        [av show];
        return;

    }

我想知道这是否是唯一的检测方法,即使我只使用NSUbiquitousKeyValueStore(不是 iCloud 文档存储)。有更好的选择吗?

【问题讨论】:

    标签: ios detect icloud nsubiquitouskeyvaluestore


    【解决方案1】:

    基本上,NSUbiquitousKeyValueStore 始终可用,即使用户没有 iCloud 帐户(在这种情况下,NSUbiquitousKeyValueStore 只是一个简单的本地存储)。所以一般来说,你不需要问自己或用户是否有配置的 iCloud 帐户。

    如果您真的想确定,在 iOS 5 中,唯一的解决方案就是您提到的那个。

    【讨论】:

    • 您的回答似乎与文档冲突,文档中说:“避免将此类用于离线时对您的应用行为至关重要的数据 [...]”。我已经为此发布了question。你能回答这个问题吗?
    • 这意味着您不应依赖此商店作为您的本地真相,而应更多地依赖设备之间的简单同步通信渠道。
    • 谢谢!我已将您的回复发送到answer 我的问题,我希望您对此表示满意。 (如果你想自己回答,我很乐意删除我的。)
    【解决方案2】:

    我不知道文档是否已经更新,但苹果现在说:

    要确定 iCloud 是否可用,尤其是在启动时,请检查 而是 ubiquityIdentityToken 属性的值

    有关ubiquityIdentityTokenURLForUbiquityContainerIdentifier 的信息,请参见NSFileManager

    另请注意,Apple 说 URLForUbiquityContainerIdentifier 可能相对较慢,而检查 ubiquityIdentityToken 相对较快。

    这适用于 iOS6 及更高版本。

    【讨论】:

    • 如果您使用 iCloud 文档,这是真的,问题在于 iCloud 键值存储。
    • 嗯。我没有得到什么吗? ubiquityIdentityToken 的文档不建议它特定于 iCloud 文档:“当 iCloud 当前可用时,此属性 [即 ubiquityIdentityToken] 包含一个表示当前用户身份的不透明对象。如果 iCloud 因任何原因不可用或存在没有登录用户,此属性的值为 nil。"
    • 正如 Julien 所说,键值存储始终可用(即使ubiquityIdentityToken 为零)。我们要检查用户是否禁用了 Settings > iCloud > Document & Data。
    猜你喜欢
    • 2014-02-15
    • 2013-02-11
    • 2012-09-19
    • 2015-12-29
    • 2011-06-18
    • 1970-01-01
    • 2013-02-07
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多