2012-07-16 71 views
4

如果用户登录到iCloud,我将如何检测,特别是?检查URLForUbiquityContainerIdentifier的返回值是非常有限的:如何检测用户是否登录到iCloud?

1)它不能区分没有被签入iCloud的用户与其他场景, iCloud未启用。 2)如果用户在游戏仍在后台运行时从设置应用程序登录到iCloud,它似乎没有改变其行为,然后返回到应用程序尝试访问iCloud服务。

是否有更可靠的方式来检测用户是否登录?

回答

1

没有办法区分“用户未登录”和“未启用iCloud”。您在应用程序中了解的是您的应用程序目前是否可以访问iCloud,但如果答案为否,那么您不知道为什么。

但是,您的问题#2有一个解决方案 - 观察NSUbiquityIdentityDidChangeNotification。它会在整个iCloud状态发生变化时触发 - 用户登录,用户注销,用户切换帐户。

+0

我不能得到任何我的iOS应用或我tvOS应用接收了' NSUbiquityIdentityDidChangeNotification'。也许事情多年来发生了变化(?)。但是,'NSUbiquitousKeyValueStoreAccountChange'仍然有效。 – bio 2016-01-22 12:35:47

4

此外,从iOS 6中对存在的方法[[NSFileManager defaultManager] ubiquityIdentityToken],它告诉你,如果icloud是可用的并且如果用户已切换帐户

+0

有趣的是[[[NSFileManager defaultManager] ubiquityIdentityToken]'适用于我的iPhone,但在我的iPad上一直返回零 – 2014-09-17 20:59:34

+0

请注意,如果您登录到iCloud并且应用程序未使用文档(例如键值,则ubiquityIdentityToken'为'nil'仅存储)。在iOS 9.3+上, – bio 2016-01-22 12:34:02

+0

ubiquityIdentityToken也适用于iPad – 2016-08-02 03:29:11