Пользовательские зоны CloudKit в производственной среде

Интеграция iCloud работает в среде разработки и не работает в производственной среде. Может показаться, что пользовательские зоны записей не развертываются вместе с типами записей. Позвольте мне объяснить.

Конфигурация: настроенная нами схема разработки iCloud имеет несколько отдельных пользовательских зон записей, каждая из которых имеет свои собственные типы записей. В режиме разработки это работает отлично - данные сохраняются на всех устройствах, и все записи и их зоны видны на панели мониторинга iCloud.

Наблюдение. Однако, когда мы развернули схему в производственной среде, пользовательские зоны записей были исключены. Типы записей были успешно развернуты, но они остаются бесполезными, поскольку сервер не знает о пользовательских зонах записей.

Вы не будете шокированы, узнав, что каждый раз, когда производственное приложение пытается синхронизироваться с iCloud, ему сообщают (регистрируется ошибка), что тип записи не существует.

Что мы пробовали: Мы пытались восстановить контейнер iCloud с нуля, и мы попытались вручную создать пользовательские зоны записи на панели инструментов. Ни один не работал.

Кроме того, мы развернули (казалось бы) идентичную схему для другого приложения всего 1-2 недели назад, и она прошла без каких-либо проблем.

У кого-нибудь есть идеи относительно того, что может быть проблема и как ее исправить?

1 ответ

Решение

Развертывание на рабочем месте с панели мониторинга CloudKit копирует только типы записей, роли безопасности и типы подписок.

При первом развертывании приложения CloudKit копирует схему контейнера в производственную среду. Сюда входят типы записей, роли безопасности и типы подписок, но не записи, созданные в среде разработки.

Вы должны создать свои пользовательские зоны записи, используя операцию CKModifyRecordZonesOperation.

Вы можете проверить, созданы ли ваши пользовательские зоны в AppDelegate, возможно, используя UserDefaults ключ, что-то вроде CustomZonesCreated. Если нет, вызовите функцию, в которой вы будете создавать свои пользовательские зоны.

Больше информации на CloudKit Краткое руководство

Другие вопросы по тегам