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

Posted

技术标签:

【中文标题】CloudKit:iCloud 模式计划部署(使用 Seam3)【英文标题】:CloudKit: iCloud schema scheduled deploy (Using Seam3) 【发布时间】:2018-02-21 17:26:39 【问题描述】:

我使用Seam3 framework 将应用程序数据与 iCloud 同步。 我正在开发新版本,并且我的 CoreData 架构已更改。所以我相应地更改了 iCloud 架构。但我对将其部署到生产环境感到紧张。当我测试同步时,我发现同步本身可以正常工作,但是当在 CloudKit 开发环境中部署新架构并且应用仍然使用旧架构时,同步无法成功完成。

因此,为了避免任何问题(或最大程度地减少可能的影响) - 我需要将架构部署到生产环境,并在 AppStore 中发布应用程序。我可以看到我可以在 iTunesConnect 中设置计划部署,但在 CloudKit 仪表板中没有看到这样的选项。

我还检查了Apple Doc 并没有找到任何解决方案。这个问题的最佳解决方案是什么?要在 iTunesConnect 中安排部署并登录 CloudKitDashboard 并在应用发布的同时将模式提升到 Prod?但在我的行动和真正的促销之间会不会有任何差距?

【问题讨论】:

我不知道您的问题的具体答案,但有些事情让我印象深刻.. 您真的需要更改您的 iCloud 架构吗?我以为那是自动发生的。在开发过程中,您可以尝试删除 CloudKit 记录类型,然后使用新的核心数据对象模型重新生成它们。 @DavidDelMonte 嗯。我需要考虑一下。因为我已经手动创建了所有记录类型。 【参考方案1】:

Apple 不提供任何工具来协调架构推出与应用发布。我不熟悉 Seam3,但我可以理解为什么旧版本无法尝试与它不理解的新模式同步。我在这里看到了两种行动方案:

第一个选项:您会发布一个旧应用程序的版本,该版本可以容忍新架构,或者在检测到新架构时发出需要更新的通知。然后发布新架构。然后发布新版本的应用程序。如果您没有对代码进行分支(以便您可以发布对两个版本的修复),或者如果您的新架构对旧架构使用的相同记录进行了更改(而不是仅仅添加新的记录类型),那么这可以很难。

第二个选项:在新容器中推出新架构。您可以创建任意数量的容器(尽管您不能永远删除它们)。因此,旧应用程序使用原始的(可能是默认的)容器和原始架构。新容器中的所有新增内容对于应用程序的原始版本实际上是不可见的,因此不应混淆 Seam3。然后,新应用程序在不同的容器中使用新架构。如果您需要迁移数据,新应用可以轻松地从旧容器中读取数据,然后将其写入新容器。

我更喜欢第二个选项,因为旧应用的用户将继续正常运行,即使他们从未更新。这可能发生在仍在使用旧硬件(例如 iphone5)的用户身上,这些硬件无法再更新到最新的 ios,但安装了旧版本的应用程序。这种方法还为您提供了迁移数据的选项,因为新应用程序可以从旧容器读取并写入新容器。最后,您可以在新应用发布之前在新容器中推出新架构,以便在新版本上线的那一刻准备就绪,而不会干扰旧版本。

【讨论】:

以上是关于CloudKit:iCloud 模式计划部署(使用 Seam3)的主要内容,如果未能解决你的问题,请参考以下文章

使用“iCloud”徽章登录 CloudKit

来自 iCloud/CloudKit 的序列号

部署到生产:为啥 CloudKit 删除订阅类型?

如何使用 Cloudkit 快速从 iCloud 获取当前用户信息

在禁用 iCloud 驱动器的情况下运行 CloudKit 应用程序

是否可以使用 CloudKit 从 iCloud 驱动器获取数据