CloudKit 生产环境中的自定义区域

CloudKit Custom Zones in Production Environment

iCloud 集成在开发环境中有效,在生产环境中失败。自定义记录区域似乎没有与记录类型一起部署。请允许我解释一下。

配置: 我们配置的 iCloud 开发模式有多个不同的自定义记录区域,每个区域都有自己的记录类型。在开发模式下,它完美运行 - 数据跨设备持久存在,所有记录及其区域都在 iCloud 仪表板上可见。

观察: 然而,当我们将模式部署到生产环境时,自定义记录区域被排除在外。记录类型已成功部署,但它们仍然无用,因为服务器不知道自定义记录区域。

每次生产应用程序尝试与 iCloud 同步时,您都不会感到震惊,它被告知(记录错误)记录类型不存在。

我们尝试过的: 我们尝试从头开始重建 iCloud 容器,并尝试在仪表板上手动创建自定义记录区域。都没有用。

此外,我们在 1-2 周前为不同的应用程序部署了一个(看似)相同的架构,并且它顺利运行。

有没有人知道问题可能是什么以及如何解决?

从 CloudKit 仪表板部署到生产环境仅复制记录类型、安全角色和订阅类型。

The first time you deploy your app, CloudKit copies the container schema to the production environment. This includes the record types, security roles, and subscription types, but not the records that you created in the development environment.

您必须使用 CKModifyRecordZonesOperation 操作创建自定义记录区域。

您可以检查您的自定义区域是否已在您的 AppDelegate 中创建,也许使用 UserDefaults 键,例如 CustomZonesCreated.如果没有,请调用您将在其中创建自定义区域的函数。

更多信息请参见CloudKit Quick Start指南