gpt4 book ai didi

ios - 努力理解 CloudKit 中的 CKSubscriptions

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:15:35 24 4
gpt4 key购买 nike

几周来我一直在阅读有关 CKSubscription 功能的文章并尝试使用它,但我找不到关于一些一般问题的信息。我已经阅读了 Apple 文档、在线教程、我购买的书籍以及关于 SO 的问题,但我仍然不了解我认为的基础知识。很感谢任何形式的帮助。

以下是我找不到答案的问题:

1). subscriptionID 的用途是什么? convenience init 不包括它,那么为什么在 designated init 中需要它呢?如果您使用它,是否对应用程序的所有用户都一样?

2).我在这里看到有人提到您可以取消注册订阅ID。您为什么要这样做或如何这样做?

3).可以在公共(public)数据库或用户的私有(private)数据库中设置订阅吗?

4).如果我有一个对所有用户都相同的基于查询的订阅,那么数据库中是否只会列出 1 个订阅?

例如,我无法收到通知以使用我的具体用例。这在我的设置中不是问题,因为我可以获得一个 True 谓词来工作并且通知来了。所以我一定不了解订阅如何运作的基本原理。

我正在尝试设置一个订阅,当不同的用户对帖子发表评论时,每当创建新记录时都会触发订阅。然后,这条新记录将包含对创建帖子的用户的引用。我在数据库中看到的两个用户的唯一订阅是 - Notifications.user(等于引用)。所以,我假设我只会看到这个订阅。(?)但是服务器如何跟踪每个用户的记录 ID 或知道何时将其发送到特定设备?

问题是我无法让通知正常工作。我在仪表板中手动添加一条记录,并将其他用户的记录 ID 作为 CKReference。当我添加记录时,我让应用程序在我在该字段中添加为 CKReference 的用户帐户下的设备后台运行。我希望查询触发并发送推送通知,因为有人评论了该用户的帖子。

这是我设置订阅的代码:

func subscribe(userID: CKRecordID) {


let options = CKSubscriptionOptions.FiresOnRecordCreation

let userRef = CKReference(recordID: userID, action: .DeleteSelf)
let predicate = NSPredicate(format: "userRef == %@", userRef)
let predicateTwo = NSPredicate(format: "read = %@", "")
let compoundPred = NSCompoundPredicate(type: .AndPredicateType, subpredicates: [predicate, predicateTwo])

let subscription = CKSubscription(recordType: "Notifications", predicate: compoundPred, subscriptionID: subscriptionID,
options: options)
subscription.notificationInfo = CKNotificationInfo()
subscription.notificationInfo.desiredKeys = ["userPost"]
subscription.notificationInfo.alertBody = "Someone replied to your Pod post"

publicDB.saveSubscription(subscription, completionHandler: {

subscription, error in

if (error != nil) {

println("error subscribing: \(error)")

} else {

println("subscribed!")

}

})
}

最佳答案

让我试着回答一下:

  1. SubscriptionId 允许您稍后识别订阅,例如使用 CKDatabase 方法 deleteSubscriptionWithID 将其删除
  2. 如何查看答案 1。至于原因,也许您不想再收到有关此订阅的通知。这取决于您要通过您的应用实现的目标。
  3. 是的,如果您只注册一个订阅,它应该适用于您应用的所有用户

关于您的问题,请注意用户记录 ID 是特殊的,因此您可能会因为围绕它们的隐私问题而遇到与此具体相关的问题。我建议尝试一个不涉及用户的简单案例,看看订阅是否适合您。然后再考虑如何使用用户记录 ID

关于ios - 努力理解 CloudKit 中的 CKSubscriptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com