CloudKit: Доступ к среде разработки после развертывания в AppStore?
Я создал приложение CloudKit с довольно сложным графом записей, чтобы доказать наш MVP нашим клиентам. Разработка была почти безупречна, и любая проблема может быть легко выведена из дерьмового кода.
Теперь мы развернули нашу первую версию приложения. Процесс рецензирования был похож на Кафку, так как команда рецензентов не смогла войти в cloudkit. Я должен был использовать линию жизни одного из наших вопросов об AppleTS, чтобы получить контрольный список для команды рецензентов (который в основном сказал - выйдите и войдите с другой учетной записью iCloud, если та, которую вы используете, не работает).
Мы прошли через процесс обзора, и приложение находится в AppStore. Но теперь с моей стороны начинается настоящий беспорядок. Мне нужно исправить пару ошибок, но теперь я не могу получить доступ к приложению, если оно создано с моими настройками отладки. На самом деле, кажется, нет никакого способа, которым я мог бы собрать и запустить (и получить доступ, то есть логин, к среде разработчика CloudKit).
Я обнаружил некоторые неясные ссылки в сети, говорящие о правильной настройке среды разработки и разработки, но насколько я знаю, я просто следовал этой книге, и Документы Apple по советам по разработке для CloudKit просто не решают проблему. проблема.
Короче! Как мне управлять средой Dev и средой Prod в CloudKit после выпуска и как получить доступ к среде Dev из сборки XCode, отправленной на мое устройство, чтобы продолжить разработку после выпуска?
Редактировать: понимая, что мой вопрос не был достаточно ясен, здесь приходит попытка очистить
Я могу собрать и запустить из XCode. При попытке войти в iCloud с помощью
self.container.requestApplicationPermission(CKApplicationPermissions.UserDiscoverability) {...}
Я получаю
CKApplicationPermissionStatus.Denied
статус обратно. Никаких ошибок, просто отказано в возвращении. Просматривая Настройки->iCloud->iCloud Drive-> "Найти меня по электронной почте", я иногда обнаруживаю, что мой переключатель для моего приложения включен, а иногда отключен. Попытка переключения переключателя приводит к сбою приложения "Настройки". Даже переход на сайт www.icloud.com и настройка параметров обнаружения для моего приложения не решают проблему. Переустановка приложения из App Store или Testflight работает как шарм, но, конечно, работает в среде Prod.
Так что вопрос остается; Как мне управлять средами Dev и Prod таким образом, чтобы я мог получать доступ (входить в систему, если хотите) к своей среде Dev при разработке, в то время как у меня есть приложение для продажи в AppStore или производственные сборки в TestFlight для бета-тестирования.
1 ответ
Как ИСПОЛЬЗОВАТЬ CLOUDKIT Разработка ИЛИ Производственная БД в отладке Xcode (используя Xcode v 8.2) Не беспокойтесь, если вы будете придерживаться следующих указаний, это обеспечит вам возможность настроить Xcode для работы с CloudKit и использовать ОБА разработки CloudKit И ПРОИЗВОДСТВЕННАЯ БД В XCODE и для развертывания вашего проекта в App Store
1) Создайте учетную запись iCloud на компьютере xcode и войдите в нее. 2) Настройте Xcode для использования CloudKit на вкладке "Возможности" в меню "Проект", включив iCloud и выбрав поле CloudKit. Затем Xcode должен автоматически сгенерировать профили обеспечения и т. Д., Как показано различными флажками в области вкладок iCloud. 3) Нажмите на поле "CloudKit Dashboard", чтобы вызвать CloudKit. Я не знаю почему, но бывают случаи, когда вы не можете подключиться к CloudKit, при входе в систему на экране просто появляется запрос на ввод имени пользователя и пароля, и сообщение об ошибке не выдается... просто продолжайте попытки, и в итоге вы сможете подключиться 4) Разработайте свою схему записей и полей в базе данных разработки CloudKit. 5) Используйте CloudKit в своем проекте, следя за многочисленными блогами в сети, чтобы CRUD-данные в своем проекте (особенно Stackru.com). 6) Когда ваш проект закончен, отлажен и работая с базой данных разработки Cloudkit, переключитесь на производственную базу данных для ее отладки, так как при развертывании проекта в App Store App Store (и TestFlight) используют только производственную базу данных.
Как обычно, документация Apple о том, как и когда использовать производственную базу данных, часто бывает запутанной, чрезмерно сложной, противоречивой, устаревшей или просто непостижимой (т.е. написанной программистами). Кроме того, многие блоги, касающиеся этой проблемы, не обновлены до последних выпусков Xcode и iOS или просто ошибаются.
Следующее, что я нашел, работало, в основном методом проб и ошибок (и, к счастью, находя некоторые блоги, которые были правильными), сохраняя (дублируя) проект в различных точках, используя Finder, когда я получал успешную сборку.
Когда что-то не работало (например, Развертывание БД разработки CloudKit в производственной БД в CloudKit IDE), я тогда возвращал последнюю работающую копию проекта и пробовал что-то другое.
Кстати, я научился трудному способу следовать этой процедуре (т.е. дублировать и сохранять проект через Finder), прежде чем вносить ЛЮБЫЕ существенные изменения в Xcode, iOS, CloudKit, мои настройки проекта Xcode (plist, файл разрешений, настройки сборки и т. Д.). и т. д.) или значительные изменения кода.
Чтобы перейти к производственной базе данных, я сделал следующее, дублируя и сохраняя проект после каждого шага по пути…
После успешной отладки вашего проекта с помощью CloudKit Development DB (которую Xcode настраивает автоматически для вас, когда вы включаете iCloud и выбираете CloudKit на вкладке "Возможности" в меню "Настройки проекта"). Я сделал следующее...(также убедитесь, что вы вошли в iCloud на своем компьютере разработчика)
1) Я добавил это в свой файл прав (файл, расположенный в левом меню "Project" в Xcode IDE). com.apple.developer.icloud-container-environment и установите для него значение "Разработка". Запустили на iPhone, и он скомпилирован и работает. Сделал копию проекта.
2) В CloudKit IDE я развернул (выберите "Развертывание" в левом нижнем углу CloudKit IDE) схему Db SCHEMA to Production (верхний правый угол IDE). Это копирует ТОЛЬКО схему БД, но не фактические данные. Насколько я могу судить, нет способа скопировать данные из разработки в рабочую базу данных, используя CloudKit или Xcode.
3) Затем я выбрал "Производство" в левом нижнем углу CloudKit IDE. Затем цвет фона CloudKit IDE изменится, чтобы указать, что вы собираетесь подключиться к производственной базе данных. Нет необходимости изменять какой-либо код в вашем проекте для подключения к производственной базе данных.
4) Затем проект все еще успешно скомпилирован. НО, когда я запустил проект, он все еще подключен к РАЗРАБОТКЕ Db
Дублируйте, маркируйте и сохраняйте проект с помощью Finder
5) Затем я изменил "Разработка" на "Производство" в качестве значения com.apple.developer.icloud-container-environment в файле полномочий на шаге 1. Все "ящики" все еще оставались проверенными в области iClould Вкладка "Возможности" в меню "Настройки" проекта. Проект успешно компилируется. На этот раз, когда я запускал проект, он подключился к БД ПРОИЗВОДСТВА!!!
Это показывает, что возможно отладить ваш проект в XCode, используя базу данных PRODUCTION, выполнив шаги 1-5 выше
Дублируйте, маркируйте и сохраняйте проект с помощью Finder
6) Перейдите в iTunes Connect и создайте и настройте свой проект, чтобы подготовиться к загрузке вашего проекта в App Store (убедитесь, что все необходимые значки проектов и снимки экрана были созданы в Xcode, разумеется...(кстати.....Производственная БД будет работать только на реальном Устройстве….Это НЕ будет работать в Симуляторе…. чтобы переключаться между использованием БД Разработки и Производственной БД, просто измените значение шага 1 на Производство или Разработка)
6) Выберите "Универсальное устройство iOS", затем выберите "Архив" в меню "Продукт", затем выберите "Загрузить в App Store"
Я тоже застрял в этом вопросе пару дней назад. Я полностью согласен со всем, что написал до меня @adamsde1, но я хотел бы поделиться тем, что сделал.
Итак, обо всем по порядку, я создал приложение с возможностями CloudKit. Это было несложно, просто массив объектов, которые могли быть доступны для общего доступа и редактирования всем пользователям приложения (общедоступная база данных). Предполагая, что вы знаете, как это сделать, давайте перейдем к вопросу.
Насколько я понял, есть два типа баз данных Development и Production. Разработка используется (как вы могли догадаться) для разработки и производства версий TestFlight и AppStore.
Чтобы переключить приложение с разработки на производство, перейдите в раздел Права в Навигаторе проекта и добавьте com.apple.developer.icloud-container-environment
row и установите для его String значение Production
. Также вAPS Environment
строка, вам нужно установить значение String на production
также.
Следующим шагом будет изменение вашей БД в AppStore Connect. Когда вы войдете в свою панель управления, перейдите в свой контейнер, нажмите маленькую шестеренку и выберитеDeploy Schema to Production...
Это решило мою проблему, когда приложение не работало на TestFlight, но при развертывании из Xcode все было в порядке. Надеюсь, это тоже кому-то поможет