0

我正在解决一个关于 CloudKit 和 Apple 通过 CKSubscriptions 提供的推送通知的非常奇怪的问题。

首先,一切正常,我能够收到 CKNotification,它工作了几天,直到我对开发模式进行了一些更改,我只是添加了一个新字段,没有别的,没有什么奇怪的。

从那一刻起,我无法收到 CKNotifications。我确信我没有对代码犯任何错误,因为我没有更改它。我只在 Cloud Dashboard 的架构中添加了一个新字段。

我是唯一一个解决这个问题的人吗?你知道修复是否存在吗?

谢谢。

更新:如果字段“list”是 CKReference,如果设置了 DeleteSelf 操作,则不会触发通知,如果操作为 None,则触发通知。顺便说一句,我需要 DeleteSelf。

4

1 回答 1

0

解决了:

错误在于 CKSubscription 正在触发:

let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.None)                    
let predicate = NSPredicate(format: "%K == %@", "list", listReference)
                let itemsSubscription = CKSubscription(recordType: "Items", predicate: predicate, subscriptionID: "ITEMS", options: CKSubscriptionOptions.FiresOnRecordCreation | CKSubscriptionOptions.FiresOnRecordUpdate | CKSubscriptionOptions.FiresOnRecordDeletion)

但参考动作现在是 DeleteSelf

所以改变为

let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.DeleteSelf) 

会成功的。

现在工作正常。

于 2015-04-30T09:43:07.020 回答