如何获取用户的当前UserId?我使用以下代码:
CKContainer.default().requestApplicationPermission(.userDiscoverability) { (status, error) in
CKContainer.default().fetchUserRecordID { (record, error) in
if #available(iOS 10.0, *) {
CKContainer.default().discoverUserIdentity(withUserRecordID: record!, completionHandler: { (userID, error) in
self.currentuserID = userID?.userRecordID
print("user record id")
print(userID)
})
} else {
// Fallback on earlier versions
}
}
但是最后currentUserID设置为nill?有谁知道如何成功获得许可并获得当前用户ID?
答案 0 :(得分:2)
据我所知,您不需要requestApplicationPermission
的许可来获取CloudKit用户的唯一ID。你可以这样做......
CKContainer.default().fetchUserRecordID() { recordID, error in
//...
}
没有问过这个......
CKContainer.default().requestApplicationPermission(.userDiscoverability){ status, error in
//...
}
.userDiscoverability
只是其他应用用户可以通过电子邮件或电话号码找到您唯一的用户记录。
我希望有所帮助。 :)
答案 1 :(得分:0)
在获取用户信息之前,您应该检查status
值。它可能是这样的......
CKContainer.default().requestApplicationPermission(.userDiscoverability) { (status, error) in
switch status
{
case .granted:
print("iCloud is OK")
case .initialState:
print("The user has not yet decided whether to grant this permission")
return
case .couldNotComplete:
print("An error occurred during the getting or setting of the app permission")
if let error = error
{
print("err @ \(#function) -> \(error.localizedDescription)")
}
return
case .denied:
print("The user denied access to the permission.")
return
}
CKContainer.default().fetchUserRecordID { (record, error) in
if #available(iOS 10.0, *)
{
CKContainer.default().discoverUserIdentity(withUserRecordID: record!, completionHandler: { (userID, error) in
self.currentuserID = userID?.userRecordID
print("user record id")
print(userID)
})
}
else
{
// Fallback on earlier versions
}
}