ios8 - 云套件。订阅问题

标签 ios8 cloudkit cksubscription

我不太了解有关订阅的信息。我有私有(private)数据库。有一个我创建订阅的表。如果我在一个 iCloud 帐户下订阅两台设备,则会出现错误:订阅错误:

CKError 0x165c6ac0: "Server Rejected Request" (15/2032); server message = "subscription is duplicate of 'C6051A24-2DB5-47EA-98D2-7D8786AA6D3B'"; uuid = 48AC7472-006A-4FD7-84A9-DB342C83C199; container ID = "iCloud.com. *. *"


NSPredicate *truePredicate = [NSPredicate predicateWithValue:YES];
CKSubscription *itemSubscription = [[CKSubscription alloc] initWithRecordType:RecordType
                                                                    predicate:truePredicate
                                                                      options:CKSubscriptionOptionsFiresOnRecordCreation | CKSubscriptionOptionsFiresOnRecordUpdate];


CKNotificationInfo *notification = [[CKNotificationInfo alloc] init];
notification.shouldSendContentAvailable = YES;

notification.alertLocalizationKey = @"";
notification.shouldBadge = NO;

itemSubscription.notificationInfo = notification;

[self.privateDatabase saveSubscription:itemSubscription completionHandler

也许我做错了什么?我需要做什么才能让两台设备都收到订阅通知?

已编辑 :

还。我只创建一个订阅。如果我使用 fetchAllSubscriptionsWithCompletionhandler 方法,我会看到每个表有 3-4 个订阅。但这很奇怪,因为我只创建了一个。当我收到通知时,我看到的通知超出了应有的数量。

最佳答案

每个数据库都有一个订阅。因此,如果您想在数据库上接收多个用户的通知,只需创建一次就足够了。您收到错误是因为您在同一个数据库上创建了两次相同的订阅(相同的订阅 ID)。只需确保您只创建一次。您可以获取订阅以检查它是否已经创建。哈利

关于ios8 - 云套件。订阅问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30231941/

相关文章:

ios - 提请注意并促进可操作控制的发现

ios - 停止不真实的 CloudKit 调用?

ios - 如何使用 CKSubscription 检查 CKAsset 的变化?

ios - 通过 CKSubscription 观察 CKRecord 删除不起作用

ios - CKQueryNotification原因为什么是RecordUpdated但recordFields是nil?

Swift didBeginContact() 未被调用

uitableview - 在 UITableViewCell 自定义类的 UIView 属性上添加 UISwipeGestureRecognizer

swift - 按下 'more' 按钮时如何设置标签栏 Controller 内的导航栏颜色和单元格大小?

ios - 在 Swift 中将 CLLocationCoordinate2D 转换为 CLLocation 时出错

ios - 无法查询用户 CKRecords