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