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

问题描述 投票:0回答:2

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

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

现在怎么办?如何共享有关用户的秘密信息,例如电话号码,或者比方说,他的所有联系人。

CKShare
似乎无法解决此类问题。另外,如果我私下给对方发消息,这条记录会保存在哪里?进入公共数据库?呃。

当然,我可以将其全部保存在公共数据库中,但这如何安全?如果应用程序可以获取数据,那么其他人就不能获取数据吗? 我读到了有关加密数据的内容,但这对我来说听起来像是大量的工作和混乱,甚至不知道如何按需共享密钥。

ios icloud cloudkit
2个回答
13
投票

在我看来,苹果称其为“公共”数据库确实很愚蠢,因为它实际上并不是公开的。 公共数据库中的 CloudKit 数据只能通过几种方式访问:

    授权用户:
  • App Store Connect 用户可以被授予访问权限,通过 Apple 的 CloudKit API 调用您的容器。通常这只是您的 Apple ID,也可能是同事的 Apple ID。
  • Web 服务器:
  • 如果您安装了服务器到服务器密钥,则可以调用公共数据库。
  • 网页:
  • JavaScript 代码可以从您在 CloudKit 仪表板中指定的某些域调用数据库。
  • 所以不要认为它可以让任何人在任何地方都可以使用。如果苹果公司默认采用这种架构,那将是一个荒谬的架构。 Apple 的公共数据库仅意味着安装您的应用程序的任何用户都
可以

通过授权渠道访问它。 有了这个,您就可以将您描述的所有信息存储在公共数据库中。对于消息应用程序,人们需要查找其他人并可能与系统中的任何人进行通信。因此所有数据必须位于同一个位置。

CKShare

并不是真正设计来支持这样的共享数据。它更适合与一群人共享特定文档。通过

CKShare

 共享的记录应被视为临时共享。如果用户删除您的应用程序或删除共享,所有参与者都会立即失去访问权限。如果您希望数据继续存在(就像在聊天室中一样),那么您需要将其存储在公共数据库中并授予用户访问权限,使其独立于用户。
我建议创建您自己的 
User

recordType

,因为 Apple 默认的 
Users
 
recordType
 无法查询(除了通过 ID/
recordName
)。因此,如果您在 
email
 
Users
 上添加 
recordType
 字段,您将无法通过电子邮件查找用户。相反,创建您自己的 
User
 类型,您就可以按您想要的 
email
 进行搜索。
我希望有帮助。我将继续推进您的公共数据库实施。您必须手动管理共享和订阅记录,但这与使用 
CKShare

的工作量相同(但更灵活)。祝你好运!


你是对的。您将公共信息存储在公共数据库中。

2
投票
您的秘密私人信息位于您的私人数据库中。当您想要与其共享更多数据的联系人时,您可以使用链接到个人的 CKShare 来共享您的秘密私人信息。

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

同时,您需要将您的朋友同意与您共享的共享私人信息的链接保存在您的私人数据库中。去年年底,我构建了一个使用这种方案的应用程序。在其中您可以拍摄照片,它存储在您的私人数据库中,您将指向所述照片的 ckshare 的链接发送给用户列表,然后用户就可以访问它。以防万一的照片是秘密的私人信息。

© www.soinside.com 2019 - 2024. All rights reserved.