【问题标题】:CloudKit PredicateCloudKit 谓词
【发布时间】:2016-10-11 14:48:01
【问题描述】:

我正在制作一个消息传递应用程序,并且我正在使用 CloudKit 作为推送通知服务。推送通知可能与谓词“TRUEPREDICATE”一起工作,但问题是如果 A 向 B 发送消息,C 也会收到推送通知。我现在的问题是如何过滤只有收到消息的人才能获得的谓词推送通知。

 let database = CKContainer.default().publicCloudDatabase
    let predicate = NSPredicate(format: "TRUEPREDICATE")
    let subscription = CKQuerySubscription(recordType: "Message", predicate: predicate, options: .firesOnRecordCreation)

    let notification = CKNotificationInfo()
    notification.alertBody = "You have a new message!"
    notification.soundName = "default"

    subscription.notificationInfo = notification

    database.save(subscription) { result, error in
        if let error = error {
            print(error.localizedDescription)
        }
    }

【问题讨论】:

  • 如果您可以编辑您的问题以包含相关代码,将会很有帮助。

标签: ios swift xcode push-notification cloudkit


【解决方案1】:

在您的示例中,将为设置查询订阅的每个设备触发推送通知。如果要更正此问题,则需要修改谓词以将通知限制为当前用户/设备。

例如,如果您要跟踪特定用户的唯一 ID:

let userID = UUID().uuidString
let predicate = NSPredicate(format: "%K == %@", argumentArray: ["recipient", userID])

在本例中,“recipient”是 CloudKit 字段名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多