私有数据库和订阅的 Cloudkit 问题?

Posted

技术标签:

【中文标题】私有数据库和订阅的 Cloudkit 问题?【英文标题】:Cloudkit issue with private database and subscription? 【发布时间】:2014-12-06 11:36:31 【问题描述】:

问题

Bob 的 iPhone 将 recordA 保存在 Bob 私人数据库的 someZone 中。

Bob 的 iPad 接收到更改的订阅通知,并从用户私人数据库中的 someZone 检索记录 A。

Bob 的 iPod touch 还接收更改的订阅通知,并从用户私人数据库中的 someZone 中检索 recordA。

Bob 的 iPad 删除了用户私人数据库中 someZone 中的记录 A。

Bob 的 iPod touch 和 iPad(出于某种原因)收到删除订阅通知。 Bob 的 iPhone 没有收到订阅通知。

预期结果

Bob 的 iPad 不应收到删除订阅通知。只有 Bob 的 iPhone 和 iPod touch 才能收到订阅通知。

这在 CKSubscription 的文档中有说明:

当记录修改导致订阅触发时,服务器 向具有该订阅的所有设备发送推送通知除了 对于对记录进行原始更改的人。

iPad 进行了删除,因此 iPad 不应该收到订阅通知。

实际结果

尽管是原始记录更改的作者,但 iPad 仍会收到删除订阅通知。

iPhone 没有收到删除通知。

iPod touch 收到删除订阅通知。

其他反馈

无论是谁删除了记录,记录的原作者(不是更改的原作者)似乎都没有收到任何通知。这与文档不一致。

【问题讨论】:

【参考方案1】:

这是一个已知的 CloudKit 错误。但是,有一个解决方法。当您首先通过进行小更改来触摸记录然后删除记录时,它会按照描述的方式工作。

【讨论】:

我想是这样的:openradar.appspot.com/19226338 或者这个:openradar.appspot.com/18810914

以上是关于私有数据库和订阅的 Cloudkit 问题?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CKShare 订阅

当用户未登录 iCloud 时,我可以使用 CloudKit 在我的应用程序中使用订阅吗?

CloudKit公共数据库删除记录

使用 CloudKit 共享时如何正确使用数据库订阅

CloudKit CKRecordZone

CKAsset 未保存到 CloudKit - 保存所有其他字段