如何创建CloudKit订阅通知以触发记录属性更新?

时间:2016-09-25 17:02:04

标签: ios push-notification uilocalnotification cloudkit cksubscription

我使用CloudKit。我有Channel记录类型,其中isLive作为属性。它可以是01,表示频道是否有效。

如果频道从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的通知吗?

或者最好是接收此频道记录的所有更新,在我的应用中处理它们,然后在必要时发送本地通知?

2 个答案:

答案 0 :(得分:0)

仅在一次属性更新时无法注册更改。当 ANY 字段更新时,您将始终收到通知。这样做要好得多,而且总是这样。

答案 1 :(得分:0)

两件事。首先,您应该发送对记录的引用而不是原始recordName字符串。其次,将DataOutputStream添加到订阅中,以便只触发一次。

.firesOnce