CloudKit-公共和私有数据库-消息传递平台



在过去的两个小时里,我一直在谷歌上搜索这个,但几乎没有发现任何有用的东西。假设我想在CloudKit平台上创建一个带有联系人的消息传递应用程序。

用户使用公共数据库。假设您可以通过电子邮件地址在平台上搜索人员。因此,电子邮件是存储在用户记录类型中的公共信息。然而,该用户也有只有接受的联系人才能看到的秘密信息。你邀请他成为你的联系人,保存到公共数据库并发送某种通知。

现在怎么办?如何共享用户的秘密信息,例如电话号码,或者,比方说,他的所有联系人。CKShare似乎不能解决这类问题。此外,如果我私下给另一个人发信息,这个记录保存在哪里?进入公共数据库?呃

当然我可以把它全部保存在公共数据库中,但这怎么安全呢?如果应用程序可以的话,就不能有人获取数据吗?我读过关于加密数据的文章,但这听起来像是一项艰巨的工作和困惑,甚至不知道如何按需共享密钥。

在我看来,苹果把它称为"公共"数据库真的很愚蠢,因为它实际上并不是公共的。

公共数据库中的CloudKit数据只能通过以下几种方式访问:

  • 授权用户:App Store Connect用户可以通过苹果的CloudKit API访问您的容器。通常这只是你的苹果ID,也许还有同事的ID
  • Web服务器:如果安装了服务器到服务器密钥,则可以调用公共数据库
  • 网页:JavaScript代码可以从您在CloudKit Dashboard中指定的特定域调用DB

所以不要把它看作是让任何地方的任何人都可以使用。对于苹果来说,这将是一个荒谬的默认架构。苹果的公共数据库只是意味着任何安装您的应用程序的用户都可以通过授权渠道访问

这样,您就可以将所描述的所有信息存储在公共数据库中。对于消息应用程序,人们需要查找其他人,并可能与系统中的任何人进行通信。所以所有的数据都必须在同一个地方。

CKShare并不是真正为支持这样的共享数据而设计的。它更多的是用于与一组人共享特定文档。通过CKShare共享的记录应被视为临时共享。如果用户删除了你的应用程序或删除了共享,所有参与者都将立即失去访问权限。如果你想让数据继续存在(比如在聊天室里),那么你需要通过将其存储在公共数据库中并允许用户访问来使其独立于用户

我建议您创建自己的UserrecordType,因为苹果默认的UsersrecordType无法查询(ID/recordName除外)。因此,如果在UsersrecordType上添加email字段,则无法通过电子邮件查找用户。相反,创建您自己的User类型,您就可以随心所欲地按email进行搜索。

我希望这能有所帮助。我会继续推进您的公共数据库实现。您将不得不手动管理共享和订阅记录,但这与使用CKShare的工作量相同(但要灵活得多)。祝你好运

您可以将公共信息存储在公共数据库中。

以及你私人数据库中的秘密私人信息。当你建立了一个想要分享更多数据的联系人时,你可以使用链接到个人的CKShare来分享你的秘密私人信息。

这有点令人困惑,因为你想象中的联系人列表和秘密信息保存在你设备上的数据库中,但事实并非如此。它都是作为查看他人私人数据库中保存的秘密私人数据的权限远程保存的。

与此同时,你需要将你的朋友同意与你共享的私人信息的链接保存在你的私人数据库中。去年年底,我开发了一款使用这种方案的应用程序。在它里面你可以拍摄一张照片,它存储在你的私人数据库中,你将所述照片的ckshare链接发送给一个用户列表,然后用户就可以访问它。在这种情况下,照片是秘密的私人信息。

最新更新