我使用CloudKit。我有Channel
记录类型,其中isLive
作为属性。它可以是0
或1
,表示频道是否有效。
如果频道从0变为1,我想向所有用户发送通知。
我试着像这样定义CKQuerySubscription:
let liveSubscription = CKQuerySubscription(recordType: "Channel", predicate: NSPredicate(format: "(recordID == '4cebe441-c6f7-47af-85df-e6572e757c5c') AND (isLive == 1)"), options: [.firesOnRecordUpdate])
let liveNotificationInfo = CKNotificationInfo()
liveNotificationInfo.shouldSendContentAvailable = false
liveNotificationInfo.shouldBadge = true
liveNotificationInfo.alertBody = "Test is live now"
channelSubscription.notificationInfo = liveNotificationInfo
但这确实会发送有关此频道记录更新的通知。它不关心isLive
谓词。
知道如何才能收到isLive
从0更改为1的通知吗?
或者最好是接收此频道记录的所有更新,在我的应用中处理它们,然后在必要时发送本地通知?
答案 0 :(得分:0)
仅在一次属性更新时无法注册更改。当 ANY 字段更新时,您将始终收到通知。这样做要好得多,而且总是这样。
答案 1 :(得分:0)
两件事。首先,您应该发送对记录的引用而不是原始recordName字符串。其次,将DataOutputStream
添加到订阅中,以便只触发一次。
.firesOnce