9

如果我尝试使用以下代码订阅 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:“服务器拒绝请求”(15/2000);server message = "内部服务器错误"; uuid = B89DE7A4-9D22-42BC-9CD4-4330F3FE04EF;容器 ID = "iCloud.com.app.testApp"

或者

CKError 0x14fb3510:“服务不可用”(6/2022);server message = "安装模式失败,CAS失败"; uuid = F562D1AD-B40E-4842-A5EA-2A5F800C18F2;容器 ID = "iCloud.com.app.testApp"

有人知道如何解决吗?我可以用我的代码做点什么吗?这是Apple的问题,我无能为力吗?谢谢。

4

3 回答 3

3

我最近遇到了一个类似的错误,并且能够通过在项目的功能中切换 CloudKit 来解决它。一旦我重置了 CloudKit 权限,一切似乎都很好。

于 2015-10-21T22:59:03.647 回答
1

我有同样的问题。我最终完全更改了容器(转到项目目标 -> 功能 -> 指定自定义容器 -> 输入新的容器 ID)。之后效果很好。

于 2014-10-19T20:08:35.140 回答
1

我有确切的错误:“服务器拒绝请求”(15/2000);server message = "Internal server error" 作为 CKModifySubscriptionsOperation 的结果。

奇怪的是,用 iPad 测试订阅没问题。但是,从 iPhone 订阅不起作用。

通过更改 NSPredicate 格式来修复它:

1-旧格式(不工作)

1-1:

让谓词= NSPredicate(格式:“率> = 0”)

1-2:

让 x = 0 为!NSNumber

让谓词= NSPredicate(格式:“率> =”,x)

2-新的谓词格式(修复了问题):

让谓词= NSPredicate(格式:“率> =”,NSNumber(整数文字:0))

于 2016-12-25T12:39:49.963 回答