CKContainer requestApplicationPermission 中的服务不可用错误(CKError 代码 6)
Service unavailable error (CKError Code 6) in CKContainer requestApplicationPermission
我正在尝试使用 CloudKit 从用户的 iCloud 帐户中读取用户名,如下所示
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 功能的样子
嗯,原来我需要在调用 requestApplicationPermission
之前调用 statusForApplicationPermission:
。真是莫名其妙,因为我没有检查权限状态,所以权限请求失败了。 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);
}];
}
}];
}
}];
}
}];
}
}];
我正在尝试使用 CloudKit 从用户的 iCloud 帐户中读取用户名,如下所示
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 功能的样子
嗯,原来我需要在调用 requestApplicationPermission
之前调用 statusForApplicationPermission:
。真是莫名其妙,因为我没有检查权限状态,所以权限请求失败了。 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);
}];
}
}];
}
}];
}
}];
}
}];