使用[NSFileManager URLForUbiquiyContainerIdentifier:]和使用[NSFileManager ubiquiyIdentityToken]的主要区别是什么?
我正在尝试将iCloud支持添加到我的应用程序中,并且一直在关注苹果自己的iCloud Design Guide。指南说我应该通过调用[NSFileManager ubiquityIdentityToken]
来检查用户凭据。它还说,我应该选中[NSFileManager URLForUbiquityContainerIdentifier:]
以使该应用程序的普适容器可用。
ubiquityIdentityToken
返回nil
,而URLForUbiquityContainerIdentifier:
不返回。因为后者返回了正确的URL,所以我假设我的配置文件和授权设置正确。我还仔细检查了我正在运行应用程序的设备是否启用了iCloud,是否已登录并启用了文档和数据。
为什么一种方法暗示没有iCloud连接,而另一种方法暗示没有iCloud连接?
更新:
我注意到,如果我调用ubiquityIdentityToken
,它返回一个值,如果我在调用URLForUbiquityContainerIdentifier:
之后调用它。然而,如果我的应用程序使用键值存储而不是普适容器,ubiquityIdentityToken
将如何工作?
iCloud
推荐答案是苹果推出的一个新事物,允许应用程序检查用户是否登录到iCloud。这是一种极快的方法,可以确定同一用户在应用程序激活之间是否登录/该用户是否实际登录等。
它可以在主线程上运行,并且速度极快。这将允许您对您的应用逻辑做出决定。
需要注意的关键一点是,它可以在主线程上运行,并且速度极快。
您通常会获得此令牌,将其存储在您的应用程序中,然后在您的应用程序从后台返回时再次比较它。
这样,您可以确保它是相同的用户等。
如果返回nil,则表示用户未登录到iCloud。
以前,为了检查用户是否登录,有一个单独的调用,但您必须在另一个线程上异步运行它。我猜,他们看到了这样的情况:用户登录到iCloud,暂停他们的应用程序,登录到另一个账户,然后回到你的应用程序。这将允许您非常高效和轻松地检查这些东西。但是,该令牌没有任何用户可识别信息。
相关文章