如何使用 CKSubscription 检查 CKAsset 更改?

Posted

技术标签:

【中文标题】如何使用 CKSubscription 检查 CKAsset 更改?【英文标题】:How to check CKAsset changes with CKSubscription? 【发布时间】:2015-02-11 09:45:27 【问题描述】:

如何检查CKAsset 存储的图像在CloudKit 中是否发生了变化?

CKNotification 文档说有关desiredKeys:

数组中最多可以包含三个键。 对于您指定的键,允许的值为 NSStringNSNumberCLLocationNSDateCKReference。您不能指定其值包含其他数据类型的键。

CKAsset不在列表中

【问题讨论】:

【参考方案1】:

如果CKAsset 发生更改,您将收到推送通知。但确实订阅不会向您发送CKAsset。所以你知道有些事情发生了变化,但没有发生变化。因此,您必须自己获取记录。如果您想知道发生了什么变化,那么您必须自己将对象与之前的值进行比较。您指定的键通常也是您希望在推送通知消息中显示的键。由于您可能希望使用记录的大部分值,我认为您将始终在您的应用收到通知后获取完整记录。

【讨论】:

你怎么看,当且仅当asset url和之前一样,这是否意味着内容的内容/哈希是一样的? 非常好的问题。我认为你只能通过执行一些测试来回答这个问题,并假设你所看到的将保持这种状态。资产将保存到您的设备,其中 url 将包含某种 quid id。然后只需测试如果您更改资产会发生什么。然后你会得到一个新的ID吗?如果您更新其他字段会发生什么。网址会保持不变。但是,既然您已经使用资产获取了记录,您还可以自己创建一个哈希并将其与之前的哈希进行比较。 如果每次更改都必须获取完整记录,如果我的用户超过 40 个,我认为我的应用可能会达到 40 个请求/秒的限制?

以上是关于如何使用 CKSubscription 检查 CKAsset 更改?的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit CKSubscription 通知基础

如何使用 CKSubscription 发送多列信息

如何设置最小的 CKSubscription?

如何在 Objective-c 中删除 cksubscription?

具有复杂谓词的 CKSubscription

这是一种通过 CKSubscription 获取用户开始使用应用程序的通知的方法吗?