我尝试使用Google进行最近2个小时的搜索,发现实际上没有任何用处。 假设我要在CloudKit平台上使用联系人创建一个消息传递应用程序。
您为用户使用公共数据库。假设您可以通过电子邮件地址在平台上搜索人员。因此,电子邮件是存储在“用户”记录类型中的公共信息。但是,该用户还具有只有接受的联系人才能看到的秘密信息。您邀请他成为您的联系人,该联系人保存到公共数据库中,并发送某种通知。
现在呢?您如何共享有关用户的机密信息,例如电话号码,或者说所有用户的联系方式。 CKShare
似乎无法解决此类问题。另外,如果我私下向对方发送消息,该记录将保存在哪里?进入公共数据库?嗯。
我可以将它们全部保存在公共数据库中,但是那怎么安全?如果应用程序可以,那么有人无法获取数据吗? 我读过有关加密数据的内容,但这听起来像很多工作和混乱,甚至不知道您如何按需共享密钥。
答案 0 :(得分:1)
您有权将公共信息存储在公共数据库中。
以及您的私人数据库中的秘密私人信息。与您共享更多数据时,可以使用链接到个人的CKShare共享您的秘密私人信息。
这有点令人困惑,因为您想像您的联系人列表和秘密信息保存在设备上的数据库中,只有事实并非如此。所有这些都作为查看他人其他私有数据库中拥有的秘密私有数据的权限而远程持有。
同时,您需要将您的朋友同意与您共享的共享私人信息的链接保存到您的私人数据库中。去年下半年,我构建了使用这种方案的应用程序。您可以在其中拍照,将照片存储在您的私人数据库中,然后将指向该照片ckshare的链接发送给用户列表,然后这些用户便可以访问该照片。以防万一,照片是秘密私人信息。
答案 1 :(得分:1)
在我看来,Apple确实通过称其为“公共”数据库而变得很生气因为它实际上不是公开的。
只能通过以下几种方式访问Public数据库中的CloudKit数据:
因此,不要以为它可以提供给任何地方的任何人。对于苹果而言,将其作为默认实现将是一个荒谬的架构。 Apple的公共数据库只是意味着可以通过授权渠道 对任何安装您的应用的用户进行访问。
通过这种方式,您可以将您描述的所有信息存储在公共数据库中。对于消息传递应用程序,人们将需要查找其他人并可能与系统中的任何人进行通信。因此所有数据都必须放在同一位置。
CKShare
并非真正旨在支持这种共享数据。与一组人共享特定文档的目的更多。通过CKShare
共享的记录应视为临时共享。如果用户删除您的应用程序或删除共享,则所有参与者都会立即失去访问权限。如果希望数据继续存在(例如在聊天室中),则需要通过将其存储在“公共”数据库中并授予用户访问权限来使其独立于用户。
我建议创建自己的User
recordType
,因为无法查询Apple的默认Users
recordType
(ID / recordName
除外)。因此,如果您在email
Users
上添加了recordType
字段,则将无法通过电子邮件查找用户。而是创建自己的User
类型,然后您就可以按email
进行搜索。
我希望能有所帮助。我将继续您的公共数据库实施。您将不得不手动管理共享和订阅记录,但这与使用CKShare
的工作量相同(但更加灵活)。祝你好运!