我正试图使用下面的iCloud从他们的CloudKit帐户中读取用户的名字
CKContainer *container = [CKContainer defaultContainer];
[container accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError * _Nullable error) {
if (accountStatus == CKAccountStatusAvailable) {
[container requestApplicationPermission:CKApplicationPermissionUserDiscoverability completionHandler:^(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) {
if (applicationPermissionStatus == CKApplicationPermissionStatusGranted) {
[container fetchUserRecordIDWithCompletionHandler:^(CKRecordID * _Nullable recordID, NSError * _Nullable error) {
if (!error && recordID) {
[container discoverUserIdentityWithUserRecordID:recordID completionHandler:^(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error) {
NSLog(@"UserInfo: %@ Error: %@", userInfo, error);
}];
}
}];
}
}];
}
}];但是,每次requestApplicationPermission失败时,服务不可用,错误,状态为CKApplicationPermissionStatusCouldNotComplete。我不知道我在这里做错了什么。我尝试了多个设备和帐户,但结果仍然是一样的。我尝试过禁用和启用CloudKit的功能,就像在某些地方建议的那样,但没有成功。是否有任何信息,我需要配置,我正在丢失。下面是我的iCloud功能

发布于 2017-04-19 11:44:54
实际上,在调用statusForApplicationPermission:之前,我需要调用requestApplicationPermission。令人费解的是,仅仅因为我没有检查权限状态,权限请求就失败了。这也与Service UnAvailable错误有关。下面是工作的代码(不太优雅):
CKContainer *container = [CKContainer defaultContainer];
[container accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError * _Nullable error) {
if (accountStatus == CKAccountStatusAvailable) {
[container statusForApplicationPermission:CKApplicationPermissionUserDiscoverability completionHandler:^(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) {
if (applicationPermissionStatus==CKApplicationPermissionStatusInitialState || applicationPermissionStatus==CKApplicationPermissionStatusGranted) {
[container requestApplicationPermission:CKApplicationPermissionUserDiscoverability completionHandler:^(CKApplicationPermissionStatus applicationPermissionStatus, NSError * _Nullable error) {
if (applicationPermissionStatus == CKApplicationPermissionStatusGranted) {
[container fetchUserRecordIDWithCompletionHandler:^(CKRecordID * _Nullable recordID, NSError * _Nullable error) {
if (!error && recordID) {
[container discoverUserIdentityWithUserRecordID:recordID completionHandler:^(CKUserIdentity * _Nullable userInfo, NSError * _Nullable error) {
NSLog(@"UserInfo: %@ Error: %@", userInfo, error);
}];
}
}];
}
}];
}
}];
}
}];https://stackoverflow.com/questions/43449470
复制相似问题