公共数据库中的CloudKit用户更改通知

时间:2018-06-14 03:46:36

标签: cloudkit

CloudKit在公共数据库中有一个默认的Users表。当iCloud用户打开我的应用程序时,CloudKit会在该数据库中为他们创建一条记录。

我注意到您可以扩展Users记录类型,因此我添加了一些其他字段,例如namephotoemail

Users Record Type

我的应用的用户可以属于各种不同的Workspace(另一种记录类型)。每个Workspace记录都有一个我在应用程序中本地缓存的用户参考列表。我正在尝试弄清楚如何确保Users记录在我的应用中属于其所属工作区的最新记录。

现在我对所有公共数据库更改都有一个通知订阅:

let subscriptionSharedDatabase = CKDatabaseSubscription(subscriptionID: "subscriptionSharedDatabase")
let sharedInfo = CKNotificationInfo()
sharedInfo.shouldSendContentAvailable = true
subscriptionSharedDatabase.notificationInfo = sharedInfo

let subShared = CKModifySubscriptionsOperation(subscriptionsToSave: [subscriptionSharedDatabase], subscriptionIDsToDelete: nil)
CloudKit.sharedDB.add(subShared)

但是,据我所知,只要有人更新了他们的名字或照片,我应用的每个用户都会收到通知。这似乎效率很低,因为用户只会关心他们拥有的Workspace用户的更新。

我能想到的唯一选择是轮询定期检查公共数据库,以查找属于Users的{​​{1}}的任何更改。

我还能做些什么来使Workspace更新更有效率?

0 个答案:

没有答案