CloudKit在公共数据库中有一个默认的Users
表。当iCloud用户打开我的应用程序时,CloudKit会在该数据库中为他们创建一条记录。
我注意到您可以扩展Users
记录类型,因此我添加了一些其他字段,例如name
,photo
和email
。
我的应用的用户可以属于各种不同的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
更新更有效率?