CloudKit.订阅问题

Mik*_*l S 5 ios8 cloudkit cksubscription

我不太了解有关订阅的信息.我有私人数据库.我创建了一个订阅表.如果我在一个iCloud帐户下订阅了两个设备,则会发生错误:订阅时出错:

CKError 0x165c6ac0:"服务器拒绝请求"(15/2032); server message ="订阅与'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
Run Code Online (Sandbox Code Playgroud)

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

编辑:

也.我只创建一个订阅.如果我使用方法fetchAllSubscriptionsWithCompletionhandler,我会看到每个表的3-4个订阅.但这很奇怪,因为我只创造了一个.当我收到通知时,我会看到更多通知.

har*_*orn 5

订阅是每个数据库.因此,如果您希望在数据库上接收多个用户的通知,则只需创建一次即可.您收到错误是因为您在同一个数据库上创建了两次相同的订阅(相同的订阅ID).只需确保只创建一次.您可以获取订阅以检查是否已创建订阅.掠夺

  • 它不是每个数据库......来自苹果文档:CloudKit 订阅是每个用户的,这意味着您的应用程序需要为每个应该接收推送通知的用户创建订阅。使用您的帐户登录 CloudKit Dashboard 并在那里看到订阅并不意味着所有用户都拥有它们...... (2认同)