我正在尝试将iCloud支持添加到我的应用程序中,并且一直在关注Apple自己的iCloud Design Guide。该指南说,我应该通过调用[NSFileManager ubiquityIdentityToken]
来检查用户凭据。它还说我应该检查[NSFileManager URLForUbiquityContainerIdentifier:]
以使应用程序的普遍存在的容器可用。
我遇到的问题是ubiquityIdentityToken
返回nil
而URLForUbiquityContainerIdentifier:
没有返回。因为后者返回的是正确的URL,所以我假设我的配置文件和权利设置正确。我还仔细检查了运行我的应用程序的设备是否启用了iCloud,已登录并启用了“文档和数据”。
为什么一种方法暗示没有iCloud连接,而另一种却没有?
更新:
我注意到,如果我调用ubiquityIdentityToken
,则在调用URLForUbiquityContainerIdentifier:
之后调用它会返回一个值。但是,如果我的应用程序使用键值存储而不是普遍存在的容器,那么ubiquityIdentityToken
将如何工作?
最佳答案
ubiquityIdentityToken是Apple引入的一项新功能,允许应用程序检查用户是否登录到icloud。这是一种非常快速的方法,可确定在应用程序激活之间是否已登录同一用户/是否已实际登录该用户等。
它可以在主线程上运行,并且速度极快。这将使您能够做出有关应用逻辑的决定。
需要注意的关键是它可以在主线程上运行并且非常快。
通常,您会获得此 token ,将其存储在您的应用程序中,然后在您的应用程序从后台返回时再次进行比较。
这样,您可以确保它是同一用户,等等。
如果返回nil,则表示用户未登录iCloud。
以前,要检查用户是否已登录,曾经有一个单独的调用,但是您必须异步地在另一个线程上运行它。我猜,他们看到用户登录到iCloud,暂停他们的应用程序,登录另一个帐户并返回您的应用程序的情况。这将使您非常有效且轻松地检查这些内容。 token 虽然没有任何用户可识别的信息。
关于ios - 使用[NSFileManager URLForUbiquityContainerIdentifier :] and [NSFileManager ubiquityIdentityToken]?之间的主要区别是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13770974/