问题标签 [cknotification]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
270 浏览

ios - CKQueryNotification 原因怎么可能是 RecordUpdated 但 recordFields 是 nil?

println("queryNotification.recordFields.keys: \(queryNotification.recordFields?.keys)")

我不明白这个日志怎么可能?如果我收到记录已更新的通知,那么我至少需要一个已更改的字段,不是吗?顺便说一句,我正在更改另一台设备上的一个字段,所以我看不出为什么recordFields是 nil,它应该至少有一个键值。

在此处输入图像描述

0 投票
2 回答
1019 浏览

ios - 如何通知另一台设备 CloudKit 记录已更新?

CKSubscription 文档说:当记录修改导致订阅触发时,服务器会向所有具有该订阅的设备发送推送通知,但对记录进行原始更改的设备除外。

假设我有两个设备:设备 1 和 iPad 和设备 2 都使用相同的iCloud 帐户登录。让我们假设两个设备都订阅了某个记录类型的记录更新。

我的代码看起来像这样(我已经取出了一些家务)

在我看来,当一台设备更新记录时,应该通知另一台设备。但这不是正在发生的事情 - 没有通知。在 WWDC 2014 Advanced iCloud 视频中,他们谈到当一台设备将通知标记为已读时会收到通知,但我也没有成功。

当登录到同一帐户的另一台设备更新记录时,是否有人成功通知了一台设备?

0 投票
2 回答
812 浏览

iphone - Cloudkit:CKNotificationInfo 徽章值永远不会减少

我为 cloudkit 设置订阅通知。这是我的代码:

并且工作得很好。问题是徽章,它们似乎 cloudKit 没有重置徽章编号,即使我将徽章计数设置为零,它也会不断增加。

当应用收到新通知时,从 0 变为 5(并且每个新通知增加 1,下一次将是 6)

你们中的任何人都知道如何从 cloudkit 跟踪正确的徽章数量(在 Objective-C 中)

0 投票
1 回答
880 浏览

ios - 如何将 CKQueryNotification 连接到 CKRecord 或 CKSubsription?

我需要一种将 CKQueryNotification 连接到 CKRecord 或 CKSubscription 的方法,以便我可以接收多种记录类型的更新/插入/删除。我成功接收到 CKNotifications,这是有效载荷:

我可以通过通知有效负载获取订阅 ID,并且可以将订阅 ID 绑定到知道记录类型的本地缓存,但我想使用 CKFetchNotificationChangesOperation 来检索未读通知,此时我只有一个 CKQueryNotification 对象.

CKQueryNotification 对象只有一个 CKRecordID,据我所知,我无法从 CKRecordID 中获取 CKRecord。我可以对容器中的所有 CKRecord->recordType 执行查询,但这似乎不对。

任何帮助表示赞赏!

0 投票
1 回答
191 浏览

ios - CloudKit 和 CKSubscriptions

我正在解决一个关于 CloudKit 和 Apple 通过 CKSubscriptions 提供的推送通知的非常奇怪的问题。

首先,一切正常,我能够收到 CKNotification,它工作了几天,直到我对开发模式进行了一些更改,我只是添加了一个新字段,没有别的,没有什么奇怪的。

从那一刻起,我无法收到 CKNotifications。我确信我没有对代码犯任何错误,因为我没有更改它。我只在 Cloud Dashboard 的架构中添加了一个新字段。

我是唯一一个解决这个问题的人吗?你知道修复是否存在吗?

谢谢。

更新:如果字段“list”是 CKReference,如果设置了 DeleteSelf 操作,则不会触发通知,如果操作为 None,则触发通知。顺便说一句,我需要 DeleteSelf。

0 投票
2 回答
212 浏览

ios - CKFetchNotificationChangesOperation 的 previousServerChangeToken 是特定于用户还是特定于数据库?

对于公共CloudKit 数据库,是否有人知道在初始化 CKFetchNotificationChangesOperation 时用于 previousServerChangeToken 的数据令牌是否为:

1) 用户特定:一个数据令牌只能由一个 Apple ID 使用

或者

2) 特定于数据库:不同的 Apple ID 可以使用相同的令牌在 CKNotifications 数据库中指定相同的状态

我想知道,因为我有一些预加载的本地数据可能需要在首次启动时更新,我不确定我应该使用 CKFetchNotificationChangesOperation (初始令牌保存在主包中)还是只获取所有记录公共数据库并检查本地数据。

0 投票
1 回答
137 浏览

push-notification - CKMarkNotificationsReadOperation 是特定于设备还是特定于应用程序?

有谁知道将 CKNotification 标记为已读是否会影响所有设备或仅影响读取通知的设备?

如果它影响所有设备,那么如果您可以发送先前的服务器更改令牌以获取所有未处理的设备,那么将其标记为已读的目的是什么?

谢谢你的帮助!

0 投票
1 回答
183 浏览

nsoperation - CloudKit:当应用程序暂停时,CKOperations 不运行

我正在收听来自 CloudKit 公共数据库的 CKSubscriptions 的远程通知。我想处理在应用程序暂停时收到通知的情况......我通过使用带有“等待启动可执行文件”选项的 Xcode 运行应用程序在我的设备上模拟这种情况。我注意到application:didReceiveRemoteNotification:fetchCompletionHandler委托方法被正确调用,并且在此之后我排队了一个CKFetchNotificationChangesOperation操作,但该操作从未运行。我没有得到任何notificationChangedBlockorfetchNotificationChangesCompletionBlock回调。如果应用程序在前台运行并且收到通知,则同样可以正常工作。

我尝试将 CKOperation 和操作队列上的 QoS 设置为,NSQualityOfServiceUserInteractive但这似乎也无济于事。

我也在 WiFi 上尝试这个,iPhone 以 100% 的电量插入我的电脑。

我还需要研究什么才能让 CKOOperations 在后台运行吗?

0 投票
0 回答
167 浏览

swift - 访问 CKQueryNotification 中的记录字段时出错

当我访问从订阅返回的recordFieldson a时,我收到此错误:CKQueryNotification

无法将“__NSCFDictionary”(0x1009f0630)类型的值转换为“CKRecordValue”(0x1009fc050)。

我这样处理通知:

它似乎工作正常,我得到一个CKQueryNotification.

通知记录字段打印如下:

所以看起来 recordFields 字典在那里并被填充。我尝试访问是这样的:

然后我得到错误。

更新 我提交了一份 Apple 错误报告 26251611。

CLLocation 在 CKNotification 创建中没有被解码是我最好的猜测。

一种可能的解决方法是直接处理 userInfo,但我在处理 CKReference 时遇到了问题。在创建 CKNotification 时,似乎应该更好地处理 CKRecordValue 协议采用者。

更新 作为 24643471 的副本关闭。此时它仍处于打开状态......

0 投票
1 回答
105 浏览

macos - CloudKit 从 OSX 中的记录 ID 获取实际对象

我正在尝试使用 CKSubscription 订阅更改。我正在关注 Apple 的文档,该文档似乎非常笼统且不完整。 链接到 Apple 文档

我已经通过didReceiveRemoteNotificationin 方法将记录 ID 发送到我的应用程序,AppDelegate并且我得到了我的记录 ID:使用以下代码:

如何将 CKNotification 转换为存储在 Cloudkit 中的实际对象?我是否需要执行另一次提取,或者是我只需要转换的 CKNotification 中包含的数据。