首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建在记录属性更新时触发的CloudKit订阅通知?

如何创建在记录属性更新时触发的CloudKit订阅通知?
EN

Stack Overflow用户
提问于 2016-09-26 01:02:04
回答 2查看 376关注 0票数 1

我使用CloudKit。我有一个将isLive作为属性的Channel记录类型。它可以是指示通道是否处于活动状态的01

如果频道从0变为1,则实时状态将发送通知给所有用户。

我尝试这样定义CKQuerySubscription:

代码语言:javascript
复制
    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的通知吗?

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

EN

回答 2

Stack Overflow用户

发布于 2017-01-16 20:30:04

不能仅在一次属性更新时注册更改。当任何字段的被更新时,你都会收到通知。这要好得多,而且它总是这样工作。

票数 0
EN

Stack Overflow用户

发布于 2018-03-12 04:35:10

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

代码语言:javascript
复制
            let reference = CKReference(recordID: recordID, action: .none)
            let predicate = NSPredicate(format: "%K == %@ && %K == %@",
                                        "isLive", 1,
                                        "recordID", reference)
            let liveSubscription = CKQuerySubscription(recordType: "Channel",
                                                       predicate: predicate,
                                                       options: [.firesOnRecordUpdate, .firesOnce])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39689497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档