Сертификаты и provisioning-профили — то, без чего невозможно ни протестировать приложение на реальном iPhone, ни опубликовать его в App Store. Тема выглядит запутанной на старте, но подчиняется понятной логике.
Зачем нужны сертификаты разработчика Apple
Apple требует, чтобы каждое приложение, устанавливаемое на устройство, было подписано цифровым сертификатом, подтверждающим личность разработчика. Это защищает пользователей от неавторизованного или изменённого стороннего кода и позволяет Apple отследить, кто именно выпустил конкретную сборку.
Виды сертификатов: Development и Distribution
Сертификат Development используется при разработке и тестировании — он позволяет запускать приложение на подключённых тестовых устройствах через Xcode. Сертификат Distribution нужен для финальных сборок: публикации в App Store либо распространения по программе Ad Hoc или Enterprise вне магазина.
Что такое Provisioning-профиль
Provisioning-профиль — это файл, который связывает воедино сертификат разработчика, App ID приложения и список разрешённых устройств (для тестовых сборок). Именно profile определяет, на каком устройстве и с каким набором возможностей (push-уведомления, iCloud и т.д.) может быть запущена конкретная сборка приложения.
Как создать сертификат и профиль
Базовый путь: создать Certificate Signing Request в приложении «Связка ключей» на Mac → загрузить его в раздел Certificates на портале Apple Developer и получить сертификат → создать App ID для приложения → создать provisioning-профиль, привязав к нему сертификат, App ID и (для разработки) список тестовых устройств → скачать и установить профиль в Xcode.
App ID, Bundle ID и Entitlements
App ID — уникальный идентификатор приложения в экосистеме Apple, тесно связанный с Bundle ID, который задаётся в настройках проекта Xcode. Entitlements — набор специальных разрешений приложения (push-уведомления, доступ к iCloud, Apple Pay и другие сервисы), которые указываются при создании App ID и должны совпадать в самом коде приложения.
Частые ошибки при подписи кода
Самые распространённые проблемы: несовпадение Bundle ID в Xcode и в provisioning-профиле, истёкший срок действия сертификата или профиля, отсутствие нужного тестового устройства в списке profile при разработке, а также использование сертификата Development там, где требуется Distribution (и наоборот) при архивации сборки.
Нужен готовый аккаунт разработчика Apple Developer?
Посмотреть условия