我已经设置了多个应用程序共享相同的容器,您不仅需要在Xcode本身中进行配置,还需要在您编写的代码中进行配置。
let container = CKContainer(identifier: "iCloud.yourDB")
let publicDB = container.publicCloudDatabase
根据iCloud用户授予访问权限,而不是基于应用程序。因此,如果您将拥有使用相同iCloud ID的设备上运行的所有三个应用程序,则它们都将有权访问同一个公共数据库&,并具有默认权限。
您需要“代码”才能在管理应用程序中“创建”&“写入”您的数据库。大概是“写入”承包商应用程序中的数据库,并在消费者应用程序中“读取”数据库;一个示例场景。
但是,如果计划是让多个iCloud用户使用共享同一个容器的不同应用程序,那么您的选择会受到更多限制。私人数据库就是这样的私人数据库。所以不同的iCloud用户不能共享同一个私有数据库,不能更改权限期限,他们只能共享公共数据库。
在公共数据库中,默认权限将授予所有人读取访问权限,只允许[登录到iCloud帐户]的用户能够创建新记录并将创建的记录与创建它们的用户链接。
换言之,如果经过身份验证的用户[A]在公共数据库中创建记录,用户[B]可以读取它,但没有写入权限来更新它;您可以/可以更改访问权限,以便让他们有权这样做,如果这是您的要求,那么您将在仪表板上进行更改。
但是请注意,公共数据库的配额没有链接到iCloud帐户,据我了解,它们已链接到应用程序。因此,如果您创建一个将大量数据转储到公共数据库的应用程序,如果您的应用程序用户超出每个应用程序允许的每个用户的公共数据库配额,Apple将向您发送帐单。[是的,因此您的应用的用户越多,获得的公共数据库配额越多,但您应该/需要限制个人用户可以声称的数量以限制您对iCloud费用的责任!]
我可能会错过 - 了解苹果对其工作原理的描述/将为用户/应用程序收费的最后一段,可以通过一切手段进行澄清。
感谢您的代码,早些时候尝试过,它不工作....标识符...我有一些问题,但最大的一个是承包商上传每个项目50MB - 100MB的读写能力,那么消费者将从公共数据库访问该数据库生成报告供他们下载。所以需要有一些方法让他们只访问该项目,而不是其他各种承包商发布的其他项目。我需要某种类型的登录,而不是云登录,并为每个项目设置密码。服务器到服务器是否允许我将数据传送到服务器? – Grumpy
您可以在您的代码中添加一个登录名,并将可搜索的参考UUID与它在一个公共数据库中相关联,以便消费者和承包商可以相互查找参考UUID并搜索由该承包商/消费者提交的记录。但正如我在最后一段中所说的,您需要非常小心公共数据库中的大量数据。我一个模糊的回忆,一组略微不同的规则苹果资产[这是你需要的50/100MB],但它们被链接到你的应用程序,而不是iCloud帐户用户! – user3069232
他们知道数据限制和收费,并希望继续。一旦我们运行,将不得不限制照片。 UUID会很好。该应用程序的作品,使所有的数据可以存储在手机上供以后上传(数据收集时可能没有WiFi)。消费者可以下载消费者应用并向承包商请求访问,我可以验证UUID。消费者可能会购买,那么我需要通过请求授予对该项目的访问权限,验证他们应该有权访问,然后通过他们的UUID授予访问权限?他们说他们将有一个Icloud数据库管理员来做到这一点? – Grumpy