"未经过身份验证"访问云套件公共数据库时出现(9/1002)错误

时间:2016-09-16 12:14:46

标签: ios objective-c cloudkit

我已经在我的iOS应用程序中集成了cloudkit框架,并且在iOS 8和9中运行良好,但在iOS 10中运行良好。如果没有活动的iCloud帐户,它无法从公共数据库中获取记录。能够获取iOS 8和9中的记录,如果用户限制iCloud驱动器的应用程序,但它在iOS 10中失败,收到错误,如

  

CKError 0x170249090:"未经过身份验证" (一千〇二分之九); "没有支持   帐户,所以不返回身份验证令牌。"

它不适用于iOS设备中的开发和生产cloudkit环境。 我已经使用指向生产的AdHoc构建测试了应用程序。

以下是我的代码

CKQuery *query = [[CKQuery alloc] initWithRecordType:@"RecordSettings" predicate:[NSPredicate predicateWithFormat:@"TRUEPREDICATE"]];

CKQueryOperation *queryOperation = [[CKQueryOperation alloc] initWithQuery:query];
queryOperation.queuePriority = NSOperationQueuePriorityVeryHigh;
queryOperation.recordFetchedBlock = ^(CKRecord *record) {
              if(record != nil) {
            }
};
queryOperation.queryCompletionBlock = ^(CKQueryCursor * __nullable cursor, NSError * __nullable operationError) {

                    NSLog(@"iCloud error: %@", operationError.description);
};
[[[CKContainer defaultContainer] publicCloudDatabase] addOperation:queryOperation];

3 个答案:

答案 0 :(得分:4)

您需要在模拟器或设备上使用iCloud帐户登录。它对我有用。

答案在 Enter iCloud Credentials Before Running Your App

部分
  

在开发中,当您在模拟器或设备上通过Xcode运行应用程序时,您需要输入iCloud凭据以读取公共数据库中的记录。在生产中,默认权限允许未经过身份验证的用户读取公共数据库中的记录,但不允许他们写入记录。

答案 1 :(得分:0)

我遇到了同样的问题。一切都很好,直到iOS10。到目前为止,我发现解决此问题的唯一方法是让用户在其设备上启用iCloud Drive以获取公共容器中的任何记录。我正在向Apple提交错误报告!

答案 2 :(得分:-3)

此问题从 iOS 10.0 10.1.1 存在,但已在 iOS 10.2 中得到解决。