云套件。订阅问题
Posted
技术标签:
【中文标题】云套件。订阅问题【英文标题】:CloudKit. Problems with subscriptions 【发布时间】:2015-05-14 07:41:38 【问题描述】:我不太了解有关订阅的信息。我有私人数据库。有一个我创建订阅的表。如果我在一个 iCloud 帐户下订阅两台设备,则会出现错误:Subscribed with error:
CKError 0x165c6ac0:“服务器拒绝请求”(15/2032);服务器消息 = "订阅与 'C6051A24-2DB5-47EA-98D2-7D8786AA6D3B' 重复"; uuid = 48AC7472-006A-4FD7-84A9-DB342C83C199;容器 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 个订阅。但这很奇怪,因为我只创建了一个。当我收到通知时,我看到的通知超出了应有的数量。
【问题讨论】:
尝试重置数据库并重新开始 感谢 harryhorn,现在这些订阅不再。 harryhorn,现在又出现了同样的问题。由于我无法删除的 iCloud 订阅挂起,因此不会收到通知。只有重置开发环境有帮助。为什么会发生这种情况?这是 Apple 的 bug? 【参考方案1】:订阅是针对每个数据库的。因此,如果您想在数据库上接收多个用户的通知,只需创建一次就足够了。您收到错误是因为您在同一个数据库上创建了两次相同的订阅(相同的订阅 ID)。只需确保您只创建一次。您可以获取订阅以检查它是否已经创建。哈利
【讨论】:
如果我创建订阅,不管什么设备,那么注册通知,两个设备都会得到改变? 是的,两台设备都会得到更改。试试看。 这让我很困惑,因为我收到了同样的错误,但订阅 ID 不一样。将 ID 为 BA3B7883-9D4C-4A5A-9F03-52987466E332 的记录订阅保存到服务器时出错:订阅与“EC4279FA-2814-4D66-9B03-7014FADF1278”重复。那么我应该如何检查重复项呢? 它是 2017 年,我仍然看到这个。我只是忽略了这个错误,它工作正常。应用程序需要在其生命周期内订阅一次,但即便如此,也会出现此错误。 不是每个数据库...来自苹果文档:CloudKit 订阅是每个用户的,这意味着您的应用需要为每个应该接收推送通知的用户创建订阅。使用您的帐户登录 CloudKit Dashboard 并在其中看到订阅并不意味着所有用户都拥有它们...以上是关于云套件。订阅问题的主要内容,如果未能解决你的问题,请参考以下文章
云套件不会触发 NSUbiquityIdentityDidChangeNotification