gpt4 book ai didi

ios - CloudKit如何获取当前用户ID?

转载 作者:IT王子 更新时间:2023-10-29 08:13:07 66 4
gpt4 key购买 nike

我想在公共(public)数据库的表中为每个用户最多保存一条记录(即评级)。为此,我需要保存当前的用户 ID 或设备 ID。但是我怎样才能得到它呢?

最佳答案

使用 Swift 2 获取 iCloud ID/CloudKit 记录 ID

这是一个片段,我经常使用它来为 iOS 应用程序获取 iPhone 用户的 iCloud ID(Apple 称之为 CloudKit Record ID)。

您在 Xcode 中唯一需要做的就是激活项目 iCloud 功能中的“CloudKit”复选框。您根本不需要主动使用 CloudKit - 它只是自 iOS 8 以来所有 iCloud 事件的核心。

重要的是要知道 Apple 从不直接公开真实的 iCloud ID,而总是返回 iCloud ID 和您的应用程序 ID 的安全哈希值。但这不应该让您担心,因为该字符串对于您的应用的每个用户而言在他的所有设备上仍然是唯一的并且可以用作登录替换

我的函数是异步的并返回一个可选的 CKRecordID 对象。 CKRecordID 对象最有趣的属性是 recordName。

CKRecordID.recordName 是一个 33 个字符的字符串,其中第一个字符始终是下划线,后跟 32 个唯一字符(== 为您的应用编码的用户 iCloud ID)。它看起来类似于:"_cd2f38d1db30d2fe80df12c89f463a9e"

import CloudKit

/// async gets iCloud record name of logged-in user
func iCloudUserIDAsync(complete: (instance: CKRecordID?, error: NSError?) -> ()) {
let container = CKContainer.defaultContainer()
container.fetchUserRecordIDWithCompletionHandler() {
recordID, error in
if error != nil {
print(error!.localizedDescription)
complete(instance: nil, error: error)
} else {
print("fetched ID \(recordID?.recordName)")
complete(instance: recordID, error: nil)
}
}
}


// call the function above in the following way:
// (userID is the string you are intersted in!)

iCloudUserIDAsync() {
recordID, error in
if let userID = recordID?.recordName {
print("received iCloudID \(userID)")
} else {
print("Fetched iCloudID was nil")
}
}

关于ios - CloudKit如何获取当前用户ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29315598/

66 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com