我可以将 CloudKit 与不同的 iCloud 帐户一起使用吗

Posted

技术标签:

【中文标题】我可以将 CloudKit 与不同的 iCloud 帐户一起使用吗【英文标题】:Can i use CloudKit with different iCloud Account 【发布时间】:2017-02-08 11:06:38 【问题描述】:

我有一个开发者帐户,我正在为某人开发应用程序。我希望他能够更改 CloudKit 中的数据,所以我想使用他的 iCloud 帐户(他没有开发者帐户,只有个人帐户)。但是,我不知道如何区分我的开发者帐户和他的 iCloud 帐户。

谢谢

【问题讨论】:

您将保存什么类型的数据(文件、资产、字符串等)?这些数据对应用程序的每个用户都是私有的吗?还是在用户之间共享? @Thunk 公开数据,只有应用发布者会写入数据。 【参考方案1】:

我相信CloudKit 的公共和私有数据库概念可能会实现您需要做的事情。作为参考,我指的是 Apple 在 cloudkit 上的 WWDC 演示文稿中的幻灯片 45 (http://devstreaming.apple.com/videos/wwdc/2014/208xx42tf0hw3vv/208/208_introducing_cloudkit.pdf)

考虑到每个应用程序都有一个容器,并且该容器包括 1 个公共数据库(应用程序的所有用户都可以访问)加上大量私有数据库(每个用户一个),如果您存储的数据不是私有,然后考虑将其存储在公共数据库中。您可以在开发过程中通过登录您的iCloud 帐户对其进行修改,您的客户也可以通过登录他的iCloud 帐户对其进行修改。 (Apple 文档说公共数据库存储在 App 开发者的 iCloud 空间中)

但是,如果您将数据存储在私有数据库中,它将被写入属于当前登录用户的私有数据库实例。所以你写的任何东西都会进入一个私有数据库实例(Apple 文档说它驻留在每个用户的个人 iCloud 空间中),他写的任何东西都会进入他的私有数据库实例。直到最近,这才是故事的结局。但是,现在cloudKit 支持CKShare,简而言之,它允许用户授予对其私有数据库中特定共享项目的访问权限。因此,您仍然可以将数据写入私有数据库,但允许通过 CKshare 访问。

最后,还有另一种选择,但我不推荐。在设备设置中,您可以退出iCloud 并以其他用户身份重新登录。其中,您仍在设备上进行开发,但您已作为客户端登录 iCloud。不过,这有很多缺点。首先,凭证共享始终是一种糟糕的安全做法。但是,可能更直接的后果是您的设备将不再与您的iCloud 帐户共享/备份,而是与客户的帐户共享/备份。

如果不更好地了解您正在实施的场景,就很难给出更具体的建议。

** 根据 OP 的评论更新 **

我现在明白了。使用开发 cloudkit 仪表板可能无法正常工作。 AFAIK,您必须使用开发帐户登录,而不仅仅是 iCloud 帐户,才能使用 cloudkit 仪表板。因此,无论如何,您的客户根本无法进入。您可以将客户的电子邮件地址添加为开发团队的成员,这将使他们能够登录到您的 cloudkit 仪表板;但是,这也使他们也可以访问您的 iTunesConnect 的某些部分。而且,它确实无法扩展以支持您的应用的其他用户。

【讨论】:

您好,感谢您的回答。实际上,我正在为音乐家开发艺术家应用程序。在我开发应用程序后,他/她可以向应用程序提供数据(例如新事件)。 Cloudkit 有一个不错的仪表板,我希望他/她使用仪表板来编辑数据(因为我相信这很容易)。不知道你的推荐能不能做到这一点?

以上是关于我可以将 CloudKit 与不同的 iCloud 帐户一起使用吗的主要内容,如果未能解决你的问题,请参考以下文章

Cloudkit 为每个用户提供不同的记录类型?

CloudKit:iCloud 模式计划部署(使用 Seam3)

公共 iCloud 数据

来自 iCloud/CloudKit 的序列号

iCloud / CloudKit 用户的唯一标识符

CloudKit私有数据库读写工作无需用户登录iCloud