6

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

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

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

更新: 我注意到,如果ubiquityIdentityToken调用URLForUbiquityContainerIdentifier:. 然而,ubiquityIdentityToken如果我的应用程序使用键值存储而不是无处不在的容器,它将如何工作?

4

1 回答 1

5

ubiquityIdentityToken 是 Apple 引入的一个新东西,允许应用程序检查用户是否登录到 icloud。这是一种非常快速的方法,可以查明同一用户是否在应用程序激活之间登录/用户是否实际上已登录等。

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

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

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

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

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

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

于 2012-12-07T21:14:35.570 回答