我正在尝试将iCloud支持添加到我的应用程序中,并且一直关注Apple自己的iCloud Design Guide。该指南说我应该通过调用[NSFileManager ubiquityIdentityToken]
来检查用户凭据。它还说我应该检查[NSFileManager URLForUbiquityContainerIdentifier:]
以使应用程序的普遍容器可用。
我遇到的问题是,ubiquityIdentityToken
正在返回nil
而URLForUbiquityContainerIdentifier:
未返回ubiquityIdentityToken
。因为后者返回了正确的URL,我假设我的配置文件和权利设置正确。我还仔细检查了我正在运行应用程序的设备是否启用了iCloud,它已登录并启用了文档和数据。
为什么一种方法暗示没有iCloud连接,而另一种方法呢?
更新
我注意到,如果我调用URLForUbiquityContainerIdentifier:
,如果在调用ubiquityIdentityToken
后将其称为,则会返回一个值。然而,如果我的应用程序使用键值存储而不是普遍存储容器,{{1}}将如何工作?
答案 0 :(得分:4)
它可以在主线程上运行,速度非常快。这将允许您决定应用程序逻辑。
需要注意的关键是它可以在主线程上运行并且非常快。
您通常会获得此令牌,将其存储在您的应用中,然后在您的应用从后台返回时再次进行比较。
这样,你可以确保它是同一个用户等等。
如果返回nil,则表示用户未登录iCloud。
以前要检查用户是否已登录,有一个单独的调用,但您必须异步地在另一个线程上运行它。我猜,他们看到用户登录iCloud,暂停他们的应用程序,登录另一个帐户并返回到您的应用程序的情况。这样您就可以非常高效,轻松地检查这些内容。但令牌没有任何用户可识别信息。