CloudKit:iCloud 架构计划部署(使用 Seam3)
CloudKit: iCloud schema scheduled deploy (Using Seam3)
我使用 Seam3 framework 将应用程序数据与 iCloud 同步。
我正在开发新版本,我的 CoreData 架构已更改。所以我相应地更改了 iCloud 架构。但我对将其部署到生产环境感到紧张。当我测试 sync 时,我发现 sync 本身工作正常,但是当在 CloudKit 开发环境中部署新模式并且应用程序仍然使用旧模式时无法成功完成。
因此,为了避免任何问题(或尽量减少可能的影响)- 我需要将架构部署到生产环境,并在 AppStore 中发布应用程序。我可以看到我可以在 iTunesConnect 中设置计划部署,但在 CloudKit 仪表板中没有看到这样的选项。
我也检查了 Apple Doc 并没有找到任何解决方案。这个问题的最佳解决方案是什么?要在 iTunesConnect 中安排部署并登录 CloudKitDashboard 并在发布应用程序的同时将架构提升为 Prod?但是我的行动和真正的产品推广之间会有差距吗?
Apple 不提供任何工具来协调架构与应用程序版本的推出。我不熟悉 Seam3,但我明白为什么旧版本在尝试与它不理解的新模式同步时会失败。我在这里看到两个行动方案:
第一个选项:您将发布一个可容忍新架构的旧应用程序版本,或者在检测到新架构时发出需要更新的通知。然后发布新架构。然后发布新版本的应用程序。如果您没有对代码进行分支(以便您可以发布对两个版本的修复),或者如果您的新模式对旧模式使用的相同记录进行了更改(而不是仅仅添加新的记录类型),那么这可能很难。
第二个选项:在新容器中推出新模式。您可以根据需要创建任意数量的容器(尽管您永远不能删除它们)。因此,旧应用程序使用具有原始架构的原始容器(可能是默认容器)。新容器中的所有新增内容对于应用程序的原始版本实际上是不可见的,因此不应混淆 Seam3。然后,新应用程序在不同的容器中使用新架构。如果您需要迁移数据,新应用可以轻松地从旧容器中读取数据,然后将其写入新容器。
我更喜欢第二个选项,因为旧应用程序的用户将继续正常运行,即使他们从不更新。仍在使用旧硬件的用户可能会发生这种情况,比如 iphone5,无法再更新到最新的 IOS,但安装了旧版本的应用程序。这种方法还为您提供了迁移数据的选项,因为新应用程序可以从旧容器读取并写入新容器。最后,您可以在新应用发布之前在新容器中推出新架构,以便在新版本上线时准备就绪,而不会干扰旧版本。
我使用 Seam3 framework 将应用程序数据与 iCloud 同步。 我正在开发新版本,我的 CoreData 架构已更改。所以我相应地更改了 iCloud 架构。但我对将其部署到生产环境感到紧张。当我测试 sync 时,我发现 sync 本身工作正常,但是当在 CloudKit 开发环境中部署新模式并且应用程序仍然使用旧模式时无法成功完成。
因此,为了避免任何问题(或尽量减少可能的影响)- 我需要将架构部署到生产环境,并在 AppStore 中发布应用程序。我可以看到我可以在 iTunesConnect 中设置计划部署,但在 CloudKit 仪表板中没有看到这样的选项。
我也检查了 Apple Doc 并没有找到任何解决方案。这个问题的最佳解决方案是什么?要在 iTunesConnect 中安排部署并登录 CloudKitDashboard 并在发布应用程序的同时将架构提升为 Prod?但是我的行动和真正的产品推广之间会有差距吗?
Apple 不提供任何工具来协调架构与应用程序版本的推出。我不熟悉 Seam3,但我明白为什么旧版本在尝试与它不理解的新模式同步时会失败。我在这里看到两个行动方案:
第一个选项:您将发布一个可容忍新架构的旧应用程序版本,或者在检测到新架构时发出需要更新的通知。然后发布新架构。然后发布新版本的应用程序。如果您没有对代码进行分支(以便您可以发布对两个版本的修复),或者如果您的新模式对旧模式使用的相同记录进行了更改(而不是仅仅添加新的记录类型),那么这可能很难。
第二个选项:在新容器中推出新模式。您可以根据需要创建任意数量的容器(尽管您永远不能删除它们)。因此,旧应用程序使用具有原始架构的原始容器(可能是默认容器)。新容器中的所有新增内容对于应用程序的原始版本实际上是不可见的,因此不应混淆 Seam3。然后,新应用程序在不同的容器中使用新架构。如果您需要迁移数据,新应用可以轻松地从旧容器中读取数据,然后将其写入新容器。
我更喜欢第二个选项,因为旧应用程序的用户将继续正常运行,即使他们从不更新。仍在使用旧硬件的用户可能会发生这种情况,比如 iphone5,无法再更新到最新的 IOS,但安装了旧版本的应用程序。这种方法还为您提供了迁移数据的选项,因为新应用程序可以从旧容器读取并写入新容器。最后,您可以在新应用发布之前在新容器中推出新架构,以便在新版本上线时准备就绪,而不会干扰旧版本。