Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/114.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是否有任何方法可以转移CloudKit共享记录的所有权?_Ios_Cloudkit - Fatal编程技术网

Ios 是否有任何方法可以转移CloudKit共享记录的所有权?

Ios 是否有任何方法可以转移CloudKit共享记录的所有权?,ios,cloudkit,Ios,Cloudkit,我刚刚花了几个小时评估了CloudKit为一个潜在的多租户应用程序提供的共享功能,虽然我想我知道答案,但我觉得我应该问问社区 用例:支持多家公司的应用程序,每个公司都有自己的用户,只能访问该公司内的共享数据(记录)。想象一下Slack的独立工作区:a公司的用户应该能够看到a公司的所有数据,也许最终a公司雇佣了一名新员工(用户),他也应该看到相同的数据。B公司拥有完全独立的用户/数据,A公司的任何人都看不到B公司 问题:根据我对CloudKit的理解,记录与用户相关,而不是与公司/团队/团队相关。

我刚刚花了几个小时评估了CloudKit为一个潜在的多租户应用程序提供的共享功能,虽然我想我知道答案,但我觉得我应该问问社区

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

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

似乎每家公司都需要拥有自己的iCloud账户才能成为主要的“所有者”,这让非技术人员感到不专业或难以理解(之后与未来用户分享会变得复杂)


我想错了吗?将CloudKit作为此应用程序的后端,我是否已经找错了方向?

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

通过
CKShare
功能共享
CKRecord
要有限得多。当以这种方式共享时,您只需向某人的
Private
数据库提供共享视图。如果该用户消失,共享记录将随之消失,共享将停止。只有
公共
数据库可以独立于用户状态保存记录

一个警告是,
公共
数据库必须由一个苹果开发者帐户拥有。您不能在业务级别上跨公司共享所有权。但就应用程序而言,您的开发人员帐户可以拥有数据库,您可以与任意多的租户共享数据


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

只是为了确保我正确理解您的意思:我将设置一个
公共
数据库,最终由与我的应用程序关联的开发人员帐户拥有,所有数据将作为记录存储在该数据库中。假设我在每个表/记录中都有一个字段,可以识别它的目标租户/公司,这取决于我的应用程序的过滤逻辑,以确保用户只看到他们想要看到的,对吗?我根本不应该担心这是一个
公共
CloudKit数据库的安全问题?是的,这是正确的。您不需要担心
公共
数据库。苹果选择了一个奇怪的名字来描述它的真实面目。它是“公共”的,即任何使用你的应用程序的人都可以访问其中的数据,但它不向全世界开放,不能进行读写。只有您的应用程序才能访问数据。感谢您的帮助!