我目前正在开发一个应用程序,允许用户共享事件,并同时使用多个手机登录他们的客人。我成功地设置了CKQuerySubscription并更新、删除和创建工作正常,但只在主电话上(共享事件的手机)。
我最近发现,对于一个非主用户来说,它必须从我设置的CKDatabaseNotification那里获得通知,并且当我通过CloudKit仪表板进行更改时,它可以工作,因为我正在获得远程通知。
但是,我得到的通知(CKDatabaseNotification)并没有提供任何允许我查找哪些记录更改的内容。我试着将它转换为CKNotification,就像在这个链接上建议的那样,但正如预期的那样,它失败了。
我已经设置了一个自定义区域,我的问题如下:
发布于 2019-03-19 12:40:53
CKDatabaseNotification只会告诉你一些事情已经改变了,而不是它是什么。推荐的前进路径是使用CKFetchDatabaseChangesOperation查找哪些记录区域有更改。然后,在CKFetchRecordZoneChangesOperation中使用该操作中的记录区域ID来获取所有更改。
在CloudKit快速启动指南中有更多的信息
我正在挑选下面的一些相关信息:
在应用程序启动或收到推送后,您的应用程序使用CKFetchDatabaseChangesOperation,然后CKFetchRecordZoneChangesOperation只要求服务器自上次更新以来所做的更改。 这些操作的关键是previousServerChangeToken对象,它告诉服务器应用程序最后一次与服务器对话的时间,允许服务器只返回自那时起更改的项。 首先,您的应用程序将使用CKFetchDatabaseChangesOperation来查找哪些区域发生了变化。
然后
接下来,应用程序使用一个带有您刚刚收集到的区域ID集的CKFetchRecordZoneChangesOperation对象来执行以下操作: ·创建和更新任何已更改的记录。删除不再存在的任何记录。更新区域更改标记
WWDC视频CloudKit最佳实践也讨论了这个主题。
https://stackoverflow.com/questions/55119937
复制相似问题