所以在IOS 9中可以做到这一点:
let subscription = CKQuerySubscription(recordType: "SomeType", predicate: somePredicate, subscriptionID: someSubscriptionID, options: [.firesOnRecordCreation, .firesOnRecordDeletion])
subscription.notificationInfo = ...
publicDatabase.save(subscription) { (savedSubscription, error) in }
然而,现在Swift 3已经弃用了CKQuerySubscription,建议将CKDatabaseSubscription用于共享数据库。我有以下代码:
let subscription = CKDatabaseSubscription(subscriptionID: someSubscriptionID)
subscription.recordType = "SomeType"
publicDatabase.save(subscription) { (savedSubscription, error) in }
问题是,我看不出如何使用此方法指定谓词和订阅选项。有人请帮忙。
CKQuerySubscription没有被100%否决。但是它的范围改变了
对于公共数据库默认区域&专用数据库默认区域使用CKQuerySubscription获取通知。
共享数据库有两个步骤&专用数据库自定义区域。
步骤1:CKDatabaseSubscription到Private&共享数据库。
第一步将让你的区域添加,区域更新或区域删除通知私人&共享数据库。
步骤2:从共享数据库获取所有自定义区域&专用数据库。并为每个区域创建CKRecordZoneSubscription。
注意:CKQuerySubscription不适用于共享数据库,但它适用于私有数据库自定义区域,您可以在其中添加谓词&通知选项。
因为我们在步骤1中创建了CKDatabaseSubscription。如果在我们从Private&共享数据库。您将收到通知。
如果通知类型为.database,则基于订阅ID从共享或专用数据库获取所有区域。
如果通知类型为.recordZone,则获取区域ID并使用以前保存的服务器更改令牌获取记录更改。