当我创建订阅时:
let options: CKSubscriptionOptions = [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]
let subscription = CKDatabaseSubscription(recordType: "Territory", predicate: NSPredicate(value: true), options: options)
并将其保存到我的共享数据库:
sharedDatabase?.save(subscription) { _, _ in }
它仍然没有出现在我的cloudkit仪表板中。为什么呢?
对于私人数据库,显示......
我注册后,我需要知道哪些记录已经改变,以及改变了什么类型。
答案 0 :(得分:3)
您必须使用Territory
CKDatabaseSubscription
记录类型的位置
的更多信息请注意,共享中不支持CKQuerySubscription 数据库和CKDatabaseSubscription目前仅跟踪更改 来自私人和共享数据库中的自定义区域。
答案 1 :(得分:0)
Dunno(如果您曾经想过),已经有一年了,但是:
func subscribeToSharedDBForRecordType(recordType:String){
let newSubscription = CKDatabaseSubscription()
newSubscription.recordType = recordType
let info = CKSubscription.NotificationInfo()
info.soundName = "default"
info.alertBody = "Something changed the record!"
newSubscription.notificationInfo = info
CKContainer.default().sharedCloudDatabase.save(newSubscription) { [weak self] savedSubscription, error in
guard let savedSubscription = savedSubscription, error == nil else {
print("error saving subscription:\(String(describing: error))")
return
}
UserDefaults.standard.set(newSubscription.subscriptionID, forKey: "someUniqueKey")
}
}
将订阅您对共享数据库中给定记录类型的所有更改。下一步是查看区域通知以确定受影响的区域。我没有为我的项目这样做,所以我不知道如何做。