- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将表的 CKSubscription 设置为“在创建记录时触发”。当我需要更新 CKSubscription 的特定实例时,我确保在添加它之前先将其删除。
但现在每当我保存新的 CKRecord 时,我都会收到四个相同的推送通知实例。有没有人经历过这个?如果是这样,是否有解决此问题的方法?
最佳答案
是的,您需要用这样的代码告诉它您处理了通知?
func fetchNotificationChanges() {
let operation = CKFetchNotificationChangesOperation(previousServerChangeToken: nil)
var notificationIDsToMarkRead = [CKNotificationID]()
operation.notificationChangedBlock = { (notification: CKNotification) -> Void in
// Process each notification received
if notification.notificationType == .query {
let queryNotification = notification as! CKQueryNotification
let reason = queryNotification.queryNotificationReason
let recordID = queryNotification.recordID
print("reason \(reason)")
print("recordID \(recordID)")
// Do your process here depending on the reason of the change
// Add the notification id to the array of processed notifications to mark them as read
notificationIDsToMarkRead.append(queryNotification.notificationID!)
}
}
operation.fetchNotificationChangesCompletionBlock = { (serverChangeToken: CKServerChangeToken?, operationError: Error?) -> Void in
guard operationError == nil else {
// Handle the error here
return
}
// Mark the notifications as read to avoid processing them again
let markOperation = CKMarkNotificationsReadOperation(notificationIDsToMarkRead: notificationIDsToMarkRead)
markOperation.markNotificationsReadCompletionBlock = { (notificationIDsMarkedRead: [CKNotificationID]?, operationError: NSError?) -> Void in
guard operationError == nil else {
// Handle the error here
return
}
}
let operationQueue = OperationQueue()
operationQueue.addOperation(markOperation)
}
let operationQueue = OperationQueue()
operationQueue.addOperation(operation)
}
}
关于ios - 即使删除 CKSubscription 并读取它们后,CloudKit 也会发送多个推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36146007/
我正在尝试使用 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 订阅时出现错误
我是一名优秀的程序员,十分优秀!