有没有办法转移 CloudKit 共享记录的所有权?

问题描述

我刚刚花了几个小时评估 CloudKit 的共享功能,用于潜在的多租户应用程序,虽然我认为我知道答案,但我觉得我应该询问社区。​​em>

用例支持多个公司的应用,每个公司都有自己的用户,这些用户只能访问该公司内部的共享数据(记录)。想象一下 Slack 的独立工作区:A 公司的用户应该能够看到 A 公司的所有数据,也许最终 A 公司雇佣了一名新员工(用户),他也应该看到相同的数据。 B 公司拥有完全独立的用户/数据,A 公司的任何人都不会看到。

问题:根据我目前对 CloudKit 的理解,记录与用户相关联,而不是公司/团队/组。如果用户 A(公司 A)与用户 B 共享一条记录,这是完全可行的,用户 B 将看到所有内容包括子记录)。但是现在让我们假设用户 A 离开了公司。另一个用户如何获得这些记录的所有权,以便用户 B 可以继续访问公司的数据?

似乎每家公司都需要拥有自己的 iCloud 帐户才能充当主“所有者”,这对于非技术人员来说理解起来不专业或具有挑战性(并且随后与未来用户共享变得复杂)。

>

我想错了吗?将 CloudKit 视为此应用的后端,我是否已经走错了树?

解决方法

我认为最适合您所描述的设置是在 CloudKit 容器中使用 Public 数据库。可以根据需要共享和“拥有”CKRecord。所有可以访问数据库的人都可以使用该记录。

通过 CKRecord 功能共享 CKShare 的限制要大得多。以这种方式共享时,您只是向某人的 Private 数据库提供共享视图。如果该用户消失,则共享记录随之消失,共享停止。只有 Public 数据库可以保留与用户状态无关的记录。

一个警告是,Public 数据库必须由一个 Apple Developer 帐户拥有。您不能在业务级别跨公司共享所有权。但对于您的应用而言,您的开发者帐户可以拥有数据库,并且您可以根据需要与任意数量的租户共享数据。

如果您有任何后续问题,请告诉我。