2016-03-06 119 views
1

我可以在CloudKit中看到Security Rolls的唯一用途是授予另一个团队成员访问cloudkit Dashboard以修改仪表板中的表?这是正确的,还是我错过了什么?Cloudkit安全角色

目前我是唯一一个可以登录仪表板的人,我无法添加其他团队成员。我认为这是因为我在苹果注册为单一开发人员?我希望能够使用它在公共数据库上设置某种类型的安全性,但似乎我无法通过安全角色来实现这一点。

我试图建立三种不同类型的用户对公共数据库:

我将有3个应用程序在这同一容器中运行。

1)管理 - 单独的应用程序

2)消费者 - 单独的应用程序

3)承包商 - 单独的应用程序

我发现这个线程:

How do I access security role in cloudkit

似乎我必须在每个应用程序中添加安全性才能访问该类型用户允许的数据?

回答

1

我已经设置了多个应用程序共享相同的容器,您不仅需要在Xcode本身中进行配置,还需要在您编写的代码中进行配置。

let container = CKContainer(identifier: "iCloud.yourDB") 
let publicDB = container.publicCloudDatabase 

根据iCloud用户授予访问权限,而不是基于应用程序。因此,如果您将拥有使用相同iCloud ID的设备上运行的所有三个应用程序,则它们都将有权访问同一个公共数据库&,并具有默认权限。

您需要“代码”才能在管理应用程序中“创建”&“写入”您的数据库。大概是“写入”承包商应用程序中的数据库,并在消费者应用程序中“读取”数据库;一个示例场景。

但是,如果计划是让多个iCloud用户使用共享同一个容器的不同应用程序,那么您的选择会受到更多限制。私人数据库就是这样的私人数据库。所以不同的iCloud用户不能共享同一个私有数据库,不能更改权限期限,他们只能共享公共数据库。

在公共数据库中,默认权限将授予所有人读取访问权限,只允许[登录到iCloud帐户]的用户能够创建新记录并将创建的记录与创建它们的用户链接。

换言之,如果经过身份验证的用户[A]在公共数据库中创建记录,用户[B]可以读取它,但没有写入权限来更新它;您可以/可以更改访问权限,以便让他们有权这样做,如果这是您的要求,那么您将在仪表板上进行更改。

但是请注意,公共数据库的配额没有链接到iCloud帐户,据我了解,它们已链接到应用程序。因此,如果您创建一个将大量数据转储到公共数据库的应用程序,如果您的应用程序用户超出每个应用程序允许的每个用户的公共数据库配额,Apple将向您发送帐单。[是的,因此您的应用的用户越多,获得的公共数据库配额越多,但您应该/需要限制个人用户可以声称的数量以限制您对iCloud费用的责任!]

我可能会错过 - 了解苹果对其工作原理的描述/将为用户/应用程序收费的最后一段,可以通过一切手段进行澄清。

+0

感谢您的代码,早些时候尝试过,它不工作....标识符...我有一些问题,但最大的一个是承包商上传每个项目50MB - 100MB的读写能力,那么消费者将从公共数据库访问该数据库生成报告供他们下载。所以需要有一些方法让他们只访问该项目,而不是其他各种承包商发布的其他项目。我需要某种类型的登录,而不是云登录,并为每个项目设置密码。服务器到服务器是否允许我将数据传送到服务器? – Grumpy

+0

您可以在您的代码中添加一个登录名,并将可搜索的参考UUID与它在一个公共数据库中相关联,以便消费者和承包商可以相互查找参考UUID并搜索由该承包商/消费者提交的记录。但正如我在最后一段中所说的,您需要非常小心公共数据库中的大量数据。我一个模糊的回忆,一组略微不同的规则苹果资产[这是你需要的50/100MB],但它们被链接到你的应用程序,而不是iCloud帐户用户! – user3069232

+0

他们知道数据限制和收费,并希望继续。一旦我们运行,将不得不限制照片。 UUID会很好。该应用程序的作品,使所有的数据可以存储在手机上供以后上传(数据收集时可能没有WiFi)。消费者可以下载消费者应用并向承包商请求访问,我可以验证UUID。消费者可能会购买,那么我需要通过请求授予对该项目的访问权限,验证他们应该有权访问,然后通过他们的UUID授予访问权限?他们说他们将有一个Icloud数据库管理员来做到这一点? – Grumpy