使用[NSFileManager URLForUbiquityContainerIdentifier:]和[NSFileManager ubiquityIdentityToken]之间的主要区别是什么?

时间:2012-12-07 21:04:50

标签: ios icloud nsfilemanager

我正在尝试将iCloud支持添加到我的应用程序中,并且一直关注Apple自己的iCloud Design Guide。该指南说我应该通过调用[NSFileManager ubiquityIdentityToken]来检查用户凭据。它还说我应该检查[NSFileManager URLForUbiquityContainerIdentifier:]以使应用程序的普遍容器可用。

我遇到的问题是,ubiquityIdentityToken正在返回nilURLForUbiquityContainerIdentifier:未返回ubiquityIdentityToken。因为后者返回了正确的URL,我假设我的配置文件和权利设置正确。我还仔细检查了我正在运行应用程序的设备是否启用了iCloud,它已登录并启用了文档和数据。

为什么一种方法暗示没有iCloud连接,而另一种方法呢?

更新 我注意到,如果我调用URLForUbiquityContainerIdentifier:,如果在调用ubiquityIdentityToken后将其称为,则会返回一个值。然而,如果我的应用程序使用键值存储而不是普遍存储容器,{{1}}将如何工作?

1 个答案:

答案 0 :(得分:4)

ubiquityIdentityToken是Apple推出的新功能,允许应用程序检查用户是否登录了icloud。这是一种非常快速的方法,可以确定同一用户是否在应用程序激活之间登录/如果用户已登录等等。

它可以在主线程上运行,速度非常快。这将允许您决定应用程序逻辑。

需要注意的关键是它可以在主线程上运行并且非常快。

您通常会获得此令牌,将其存储在您的应用中,然后在您的应用从后台返回时再次进行比较。

这样,你可以确保它是同一个用户等等。

如果返回nil,则表示用户未登录iCloud。

以前要检查用户是否已登录,有一个单独的调用,但您必须异步地在另一个线程上运行它。我猜,他们看到用户登录iCloud,暂停他们的应用程序,登录另一个帐户并返回到您的应用程序的情况。这样您就可以非常高效,轻松地检查这些内容。但令牌没有任何用户可识别信息。