这个问题来自于熟悉CloudKit并正在转向Realm移动平台的人。
使用CloudKit,我们拥有私有,公共和共享数据库的概念。私有属于用户,每个用户都可以看到公共,共享数据库就像是用户私有数据库的视图,用于在有限数量的用户(朋友)之间共享数据。
假设我想允许两个用户在项目上进行协作,用户A将创建项目并邀请用户B进行协作,我将使用哪种机制来实现这一点,而无需完全打开用户A的私有领域用户B(只有项目用户A想要共享的记录)?
答案 0 :(得分:0)
现在,Realm权限对数据库(Realm)级别是精细的。无法授予仅适用于给定领域中数据子集的特定权限。
我们路线图中的一个高优先级项目是支持使用已同步领域的部分副本的功能。与此同时,我们建议为给定用户创建多个私有领域,以表示每个权限子集。例如,您可以为给定用户提供真正的私有领域,并为该用户提供一个或多个领域,表示可与其他用户共享的数据。在您的特定情况下,您可能希望为每个项目创建一个Realm,而不是为用户拥有的所有项目创建一个Realm。
对于实际授予权限,您可以创建RLMSyncPermissionValue
对象并将其传递到RLMSyncUser
上的相应API(例如-[RLMSyncUser applyPermission:callback:]
或-[RLMSyncUser revokePermission:callback:]
)以授予或撤消许可。这需要知道用户的身份,这是在创建用户时由Realm Object Server生成的。
您还可以创建一个RLMSyncPermissionOffer
对象来表示您的用户邀请其他用户访问其Realm(即项目)。这样的对象生成一个字符串,该字符串可以通过不同的通道(例如电子邮件)传递给另一个用户,并用于创建RLMSyncPermissionOfferResponse
对象以接受该提议。
最后,除了前面提到的部分复制支持之外,我们还在管道中还有一些其他项目可以更容易地协同使用同步领域;我们希望很快能有更多的分享。