如果我尝试使用以下代码订阅CloudKit:
NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES];
CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:RecordType
predicate:truePredicate
options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate | CKSubscriptionOptionsFiresOnRecordDeletion];
CKNotificationInfo *notification = [[CKNotificationInfo alloc] init];
notification.alertBody = @"Item Added/Updated/Deleted!";
itemSubscription.notificationInfo = notification;
[self.publicDatabase saveSubscription:itemSubscription completionHandler:^(CKSubscription *subscription, NSError *error) {
if (error) {
// In your app, handle this error appropriately.
NSLog(@"An error occured in %@: %@", NSStringFromSelector(_cmd), error);
} else {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:subscription.subscriptionID forKey:kSubscriptionID];
[defaults synchronize];
}
}];
我有时会收到此错误:
CKError 0x17558460:"服务器拒绝请求" (2000分之15); server message ="内部服务器错误&#34 ;; uuid = B89DE7A4-9D22-42BC-9CD4-4330F3FE04EF;容器ID =" iCloud.com.app.testApp"
或
CKError 0x14fb3510:"服务不可用" (二千〇二十二分之六);服务器消息="安装架构失败,CAS失败&#34 ;; uuid = F562D1AD-B40E-4842-A5EA-2A5F800C18F2;容器ID =" iCloud.com.app.testApp"
有人知道如何解决这个问题吗?我可以用我的代码做点什么吗?这是Apple的问题吗,我什么都做不了? 感谢。
答案 0 :(得分:3)
我最近遇到了类似的错误,并且能够通过在项目的功能中切换CloudKit来解决它。一旦我重置了CloudKit权限,一切似乎都运行得很好。
答案 1 :(得分:1)
我遇到了完全相同的问题。我最终完全更换了容器(转到项目目标 - >功能 - >指定自定义容器 - >输入新的容器ID)。它之后运作得很好。
答案 2 :(得分:1)
我遇到了确切的错误:“服务器拒绝请求”(15/2000); server message =“内部服务器错误”,作为CKModifySubscriptionsOperation的结果。
使用iPad测试订阅的奇怪之处是好的。但是,从iPhone订阅不起作用。
通过更改NSPredicate格式修复它:
1-旧格式(不工作)
1-1:
让谓词= NSPredicate(格式:“rate> = 0”)
1-2:
让x = 0为!的NSNumber
让谓词= NSPredicate(格式:“rate> =”,x)
2-新谓词格式(修复了问题):
让谓词= NSPredicate(格式:“rate> =”,NSNumber(integerLiteral:0))