我正在解决一个非常奇怪的问题,那就是苹果通过CKSubscriptions提供的CloudKit和推送通知。
首先,一切都很好,我可以收到一个CKNotification,它工作了一段时间,直到我对开发模式做了一些更改,我只是添加了一个新字段,没有其他的,没有什么奇怪的。
从那一刻起,我就无法接收CKNotifications了。我确信我没有在代码中犯任何错误,因为我没有修改它。我只是从Cloud Dashboard在我的模式中添加了一个新字段。
我是唯一一个解决这个问题的人?您是否知道是否存在修复程序?
谢谢。
更新:如果"list“字段是一个CKReference,如果设置了DeleteSelf操作,则不会触发通知,如果操作为None,则会触发通知。顺便说一句,我需要DeleteSelf。
发布于 2015-04-30 17:43:07
已解决:
错误在于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) 就能达到目的。
现在工作得很好。
https://stackoverflow.com/questions/29962163
复制相似问题