gpt4 book ai didi

ios - CloudKit - 公共(public)和私有(private)数据库 - 消息传递平台

转载 作者:行者123 更新时间:2023-12-01 17:46:35 25 4
gpt4 key购买 nike

我在过去 2 小时内尝试在 Google 上搜索此内容,但几乎没有发现任何有用的信息。假设我想在 CloudKit 平台上创建一个包含联系人的消息应用程序。

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

现在呢?您如何共享有关用户的 secret 信息,例如电话号码,或者说,他的所有联系人。 CKShare 似乎并不能解决这类问题。另外,如果我私下给对方发消息,这条记录会保存在哪里?进入公共(public)数据库?嗯。

当然,我可以将其全部保存在公共(public)数据库中,但这样安全吗?如果应用程序可以,那么有人不能获取数据吗?我阅读了有关加密数据的信息,但这对我来说听起来像是很多工作和困惑,甚至不知道如何按需共享 key 。

最佳答案

在我看来,Apple 将其称为“公共(public)”数据库确实是搞砸了因为它实际上并不是公共(public)的

您在公共(public)数据库中的 CloudKit 数据只能通过以下几种方式访问​​:

  • 授权用户: App Store Connect 用户可以被授予访问权限,以通过 Apple 的 CloudKit API 调用您的容器。通常这只是您的 Apple ID,也可能是同事的。
  • Web 服务器:如果您安装了服务器到服务器 key ,则可以调用公共(public)数据库。
  • 网页:JavaScript 代码可以从您在 CloudKit 仪表板中指定的某些域调用数据库。

所以不要认为它可以让任何地方的任何人都可以使用它。对于 Apple 来说,将其作为默认实现是一种荒谬的架构。 Apple 的公共(public)数据库只是意味着 可以通过授权 channel 对安装您的应用的任何用户进行访问。

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

CKShare 并不是真正为支持这样的共享数据而设计的。它更多地用于与一组人共享特定文档。通过 CKShare 共享的记录应被视为暂时共享。如果用户删除您的应用程序或删除共享,所有参与者都会立即失去访问权限。如果您希望数据继续存在(例如在聊天室中),那么您需要通过将其存储在公共(public)数据库中并授予用户访问权限来使其与用户无关。

我建议创建你自己的 User recordType 因为 Apple 默认的 Users recordType 不能被查询(除了按 ID/recordName)。因此,如果您将 email 字段添加到 Users recordType,您将无法通过电子邮件查找用户。相反,创建您自己的 User 类型,您就可以通过 email 进行搜索。

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

关于ios - CloudKit - 公共(public)和私有(private)数据库 - 消息传递平台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332381/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com