ubiquityIdentityToken与CKContainer accountStatusWithCompletionHandler

Ján*_*nos 5 ios icloud cloudkit

哪种方法更好地决定登录哪个用户?

let ubiquityIdentityToken = NSFileManager.defaultManager().ubiquityIdentityToken
Run Code Online (Sandbox Code Playgroud)

返回一个令牌,客户端可以比较它与上次相同.如果设备也处于脱机状态,它返回令牌的优点.

accountStatusWithCompletionHandler 仅返回状态值,但不返回有关谁登录的ID或令牌.因此在脱机模式下它是无用的.

我对吗?

我的另一个问题,有时甚至用户登录并且在线ubiquityIdentityToken返回nil.

如何在启动时检索用户ID?

Dav*_*ing 5

如果您使用 CloudKit,则应使用 CKContaineraccountStatusWithCompletionHandler方法检查用户是否登录 iCloud(自 iOS 8.0 起支持)。CloudKit快速入门展示了如何使用它的示例。

fetchUserRecordIDWithCompletionHandler是您应该获取用户记录 ID 的方式,该记录 ID 的范围仅限于该 CloudKit 容器,但对于跨设备的 iCloud 帐户来说是相同的。

在 iOS 9.0 中,您还将拥有CKAccountChangeNotification,当设备上的 iCloud 状态发生变化时,它将通知您的应用程序。