- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
几周来我一直在阅读有关 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!")
}
})
}
最佳答案
让我试着回答一下:
关于您的问题,请注意用户记录 ID 是特殊的,因此您可能会因为围绕它们的隐私问题而遇到与此具体相关的问题。我建议尝试一个不涉及用户的简单案例,看看订阅是否适合您。然后再考虑如何使用用户记录 ID
关于ios - 努力理解 CloudKit 中的 CKSubscriptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30089724/
我正在尝试使用 CKSubscription这边走: NSArray *events = @[@1,@2,@3]; NSInteger myValue = 100; NSPredicate *pred
目前,您必须拥有用户授予的通知权限: UIApplication *application = [UIApplication sharedApplication]; UIUserNotificatio
我可以使用 CKNotificationInfo() 和 CKNotificationInfo.alertBody 让 CKSubscription 工作。所以我可以发送一条信息。我试图让 CKSub
我今天一直在摆弄CKSubscription。我对此有一些疑问。 我这样设置我的订阅: -(void)addSubscriptions { NSPredicate *predicate = [
我正在使用 CloudKit 编写一个 Swift 应用程序。当设备在 CloudKit 中修改记录时,我希望在不显示推送通知的情况下在其他设备的本地存储中更新相应的记录。 即使我不打算显示任何推送,
我想通知用户一条聊天消息已从其他用户发送,通知的正文应该是消息。是否可以通过 CKSubscription/CKNotificationInfo 进行设置?类似于 alertBody,但特定于每条消息
我使用以下代码设置了一个 CKSubscription: NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICA
几周来我一直在阅读有关 CKSubscription 功能的文章并尝试使用它,但我找不到关于一些一般问题的信息。我已经阅读了 Apple 文档、在线教程、我购买的书籍以及关于 SO 的问题,但我仍然不
我有一个在 TvOS 下运行的 CKSubscription,当订阅触发时,它会返回此用户信息对象,这很棒。但我该如何在 Swift 中解析这个,当然不是通过制作我自己的解析例程? userInfo
如何检查使用 CKAsset 存储的图像在 CloudKit 中是否发生了变化? CKNotification 文档说了 desiredKeys: 数组中最多可以包含三个键。 对于您指定的键,允许的值
我将表的 CKSubscription 设置为“在创建记录时触发”。当我需要更新 CKSubscription 的特定实例时,我确保在添加它之前先将其删除。 但现在每当我保存新的 CKRecord 时
很抱歉,我找不到通俗易懂的英语答案,或者至少我看到的每个答案都假设我拥有一定数量的知识,而这些知识是我不应该拥有的。我只需要删除一个 CKSubscription。我该怎么做呢?非常感谢所有提示和帮助
我有这个代码。这在使用 FiresOnRecordCreation 的触发模式创建订阅时有效......但在 FiresOnce 上出错......错误是“查询订阅必须至少有一种类型的触发模式” 我的
CKSubscription 文档说:当记录修改导致订阅触发时,服务器会向所有订阅该订阅的设备发送推送通知,但进行原始更改的设备除外 记录。 假设我有两台设备:device 1 和 device 2
我正在构建一个需要订阅 iCloud 公共(public)数据库中记录更改的应用程序。现在,在观看了苹果视频并阅读了他们的文档之后,我决定开始工作。但是,我立即被困在这里: CKSubScriptio
我在没有经过身份验证的 iCloud 帐户的情况下测试我的应用程序,但在为设备订阅通知时出现此错误: subscription error 没关系,但我的问题是如何在尝试运行 CKSubscript
所以我遇到了一个 CloudKit 错误,当我搜索它时只得到一个 (1) Google 结果。运行 CKModifySubscriptionsOperation 以创建初始用户的 CK 订阅时出现错误
我是一名优秀的程序员,十分优秀!