У меня есть машина для сборки CI с сервером Xcode и с помощью бота для создания сборки, однако .ipa, созданная через бот, не имеет права регистрироваться для токена APNS.
В частности, вызывается didFailToRegisterForRemoteNotificationsWithError и появляется предупреждение о запуске "Нет допустимой строки права доступа aps-environment, найденной для приложения".
Однако, если я создаю приложение на ПК разработки separte, или я сам его создаю на машине CI независимо от бота, тогда все в порядке.
Я широко использовал push-уведомления в нескольких приложениях, поэтому знайте, что сообщение "Нет достоверной" строки права доступа aps-environment, найденной для приложения "всегда появляется, если приложение не подписано с правильными профилями. Тем не менее, я абсолютно на 100% подтвердил, что приложение создается с теми же профилями при запуске как часть сборки бота, когда я его создаю вручную.
Я также знаю, что Xcode загружает профили подготовки в разные местоположения при запуске под ботом при запуске для пользователя, и я также знаю, что бот работает как система, а не вошедший в систему пользователь при сборке вручную. Я учитывал все эти различия, но до сих пор не могу заставить бот-сборку работать.
Что еще я использовал эту ту же самую машину CI, которая ранее создавала это приложение, используя Jenkins (который также запускался как система) для push и работает!
Это то, что я сделал/проверил:
1) Загрузите проект вручную на рабочий стол, откройте в Xcode и проверьте, что подписи идентификации и профилей подшивки поданы в соответствии с настройками сборки. Создайте и запустите его вручную, используя Xcode → он работает Загрузите проект косвенно через бота как часть его интеграционного прогона. Откройте проект, загруженный Bot в Xcode (сервер Xcode загружает его в:/Library/Server/Xcode/Data/BotRuns//Cache/NNNN). Сделайте то же самое, проверьте личность подписывания и профили обеспечения. ОНИ ИДЕНТИЧНО тем, которые используются при создании на рабочем столе
ОК, поэтому проблема не связана с различием в фактических идентификаторах подписывания и профилях предоставления.
2) Когда вы запускаете Xcode вручную, он загружает профили подготовки в местоположение X, но Bot загружает профили подготовки в местоположение Y. Поэтому я изучил содержимое X и Y, чтобы убедиться, что ничего не пропало из Y ( если бы была сборка, на самом деле это не получилось, но это не так).
Чтобы быть абсолютно уверенными, что они идентичны, я скопировал все содержимое X в Y и снова запустил бот (они не получают лишнего веса от бота). Итак, теперь бот и настольные сборки используют то же самое копии профилей все еще есть разница, когда выполняется .ipa.
Кстати, местоположение X - это ~/Library/MobileDevice/Provisioning Profiles, а Y - это /Library/Server/Xcode/Data/ProvisioningProfiles.
3) Когда я строю вручную, он регистрируется как пользователь, но когда бот строит его как систему. Поэтому в цепочке ключей я попытался скопировать все сертификаты и ключи из пользовательского брелка в системный брелок. Да все равно это не имеет значения,.ipa, созданный ботом сборки, не работает должным образом, пока создается сборка, созданная вручную с помощью Xcode.
Это сводит меня с ума и уже потратил впустую дни, что еще я мог пропустить или мог бы попытаться разрешить это?
Любые предложения или идеи?