【问题标题】:Determine availability of iCloud Key Value Store确定 iCloud 键值存储的可用性
【发布时间】:2013-06-08 02:59:06
【问题描述】:

我正在开发使用 iCloud 键值存储的 OSX 10.8 应用程序。它使用文档存储。

我想确定 iCloud 键值存储是否可供用户使用。

我试图使用云:

+ (BOOL)isCloudAvailable {
       id currentCloudToken = [NSFileManager defaultManager] ubiquityIdentityToken];
       return (currentCloudToken) ? YES : NO;
}

但是,对ubiquityIdentityToken 的调用始终返回 nil,即使用户已登录 iCloud。

如果我配置了 Ubiquity Container 以及键值存储,那么该调用确实有效。

但是,我刚刚让我的应用被 Apple 审核拒绝,因为它表明我需要“文档和数据存储”,而应用中没有任何要求。我只是用它来确定 iCloud 是否可用。

是否有办法确定用户是否可以单独使用 iCloud 键值存储?

【问题讨论】:

    标签: objective-c macos cocoa icloud


    【解决方案1】:

    iCloud Fundamentals 指南有一个表格,compares Document Storage to the Key-Value Store(表 1-1)。与移动文档相反,键值存储应被视为始终有效可用

    当 iCloud 未启用时,[NSUbiquitousKeyValueStore defaultStore] 也不是 nil,它甚至存储键/值对 - 它只是不将它们上传到 iCloud 服务器。 从 NSUbiquitousKeyValueStore 的角度来看,offlinelogged-out 之间几乎没有区别。

    您还必须记住,一旦设备连接到帐户,已存储的值就会被推送到服务器。 to handle conflicts 可能是必要的(如果默认的最后一胜策略不适用于您的用例)。

    【讨论】:

    • 我正面临这个问题 - 问题不在于用户从 iCloud 注销时 - 问题在于用户转到他们的设置 - iCloud - 并向下滚动到给定的应用程序和关掉它。在这种情况下, [NSUbiquitousKeyValueStore defaultStore] 不允许您保存。它不会更新缓存的本地或 iCloud 存储。
    猜你喜欢
    • 2016-10-19
    • 2017-05-29
    • 2013-08-08
    • 1970-01-01
    • 2017-11-21
    • 2014-09-16
    • 2015-09-29
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多