如何解决Cloudkit身份验证仅适用于我的alt帐户,不适用于Dev或Tester帐户
我注意到,在模拟器或物理设备上测试cloudkit应用程序时,我只能使用alt帐户保存记录,而不能使用用于制作应用程序/容器的dev帐户保存记录。当我去保存时出现错误:
错误保存记录
到服务器:不进行CREATE操作 允许
运行时特定的错误代码为 10
if let error = error as? CKError { print(error.errorCode) }
这表示权限问题。 cloudkit仪表板中的所有安全角色均正确。我确认用户已通过所有帐户上的cloudkit进行了身份验证
CKContainer.default().accountStatus { (accountStatus,error) in
switch accountStatus {
case .available:
print("iCloud Available")
case .noAccount:
print("No iCloud account")
case .restricted:
print("iCloud restricted")
case .couldNotDetermine:
print("Unable to determine iCloud status")
}
}
它在Apple Reviewer的一端也不起作用,并且他们因该错误而拒绝了我的应用程序。这意味着不仅我的Dev帐户不起作用,而且似乎还包括alt。似乎很奇怪。
这是我的保存代码:
static func saveUser(user: UserElement,completion: @escaping (Result<UserElement,Error>) ->
()) {
let itemRecord = CKRecord(recordType: "userInfo")
itemRecord["uniqueID"] = user.bossID as CKRecordValue
itemRecord["screenName"] = user.screenName as CKRecordValue
itemRecord["shareCode"] = user.shareCode as CKRecordValue
itemRecord["subscribedBosses"] = user.subscribedBosses as CKRecordValue
let container = CKContainer(identifier: "iCloud.Caz4Short.WatChaDoin")
container.publicCloudDatabase.save(itemRecord) { (record,err) in
DispatchQueue.main.async {
if let err = err {
print("error on run")
completion(.failure(err))
return
}
guard let record = record else {
print("record")
completion(.failure(CloudKitHelperError.recordFailure))
return
}
let id = record.recordID
guard let boss = record["uniqueID"] as? String else {
print("record ID")
completion(.failure(CloudKitHelperError.recordIDFailure))
return
}
guard let name = record["screenName"] as? String else {
print("screenname")
completion(.failure(CloudKitHelperError.castFailure))
return
}
guard let bossCode = record["shareCode"] as? String else {
print("Code")
completion(.failure(CloudKitHelperError.castFailure))
return
}
guard let subs = record["subscribedBosses"] as? [String] else {
completion(.failure(CloudKitHelperError.castFailure))
return
}
let element = UserElement(recordID: id,bossID: boss,screenName: name,shareCode: bossCode,subscribedBosses: subs)
completion(.success(element))
}
}
}
解决方法
这是CloudKit的错误。有时,容器显然可以在创建时被破坏。
我能够通过在Xcode中创建一个新容器(在您应用的配置屏幕上)并取消选中旧容器来修复它。然后,我从头开始配置新容器,添加所有数据类型并配置安全角色(角色大约需要5分钟才能进入,因此请继续检查/尝试)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。