Написать код — это только часть пути от идеи до приложения в App Store. Между сборкой в Xcode и публикацией стоит целая цепочка настроек Apple Developer: App ID, provisioning-профили, сертификаты подписи и правила App Review. В этом техническом руководстве разберём, как подготовить приложение к публикации через Apple Developer без типичных ошибок, из-за которых сборки отклоняют на этапе загрузки.
Что нужно настроить в Apple Developer перед публикацией app
Прежде чем загружать приложение в App Store Connect, в аккаунте Apple Developer нужно настроить несколько связанных сущностей.
- App ID — уникальный идентификатор приложения (bundle identifier).
- Сертификаты (Certificates) — подтверждают, что сборку подписал именно ваш аккаунт.
- Provisioning-профили — связывают App ID, сертификат и устройства для тестирования.
- Capabilities — включённые возможности приложения: push, iCloud, In-App Purchase.
Пошаговая настройка приложения в Apple Developer
- В разделе Certificates, Identifiers & Profiles создайте App ID с нужным bundle identifier.
- Включите необходимые Capabilities — только те, что реально использует приложение, лишние права затягивают модерацию.
- Создайте Development-сертификат для тестирования на устройствах и Distribution-сертификат для публикации.
- Сформируйте provisioning-профиль под каждый тип сборки — Development и App Store.
- В Xcode подключите профиль в настройках подписи (Signing & Capabilities) и соберите архив для загрузки.
Типичные ошибки при подготовке приложения
| Ошибка | Причина | Как избежать |
|---|---|---|
| Invalid Provisioning Profile | Профиль не соответствует сертификату или устройству | Пересоздать профиль после любых изменений Capabilities |
| Missing Push Notification Entitlement | Push включён в коде, но не в App ID | Синхронизировать Capabilities в Xcode и в Apple Developer |
| Отклонение из-за лишних разрешений | Запрошены права, которые приложение не использует | Указывать только фактически нужные Capabilities |
Практический совет от опыта сопровождения публикаций
Самая частая причина, по которой сборка отклоняется на этапе загрузки, — рассинхронизация между Capabilities, включёнными в Xcode, и теми, что реально настроены для App ID на сайте developer.apple.com. Перед каждой публикацией стоит сверять два списка вручную: это занимает пять минут, но экономит день ожидания повторной проверки.
Чек-лист перед отправкой сборки в App Store Connect
Прежде чем нажимать Distribute App в Xcode, полезно пройтись по короткому списку — большинство отклонений на этапе загрузки (не путать с App Review) можно предотвратить именно на этом шаге.
- Версия и номер сборки (Build) увеличены по сравнению с предыдущей загрузкой
- Выбран правильный Distribution-сертификат, а не Development
- Provisioning-профиль соответствует актуальному набору Capabilities
- Иконка приложения заполнена во всех обязательных размерах Asset Catalog
- Экспортные настройки шифрования (Export Compliance) указаны корректно
Автоматическое и ручное управление подписью
Xcode предлагает два режима работы с сертификатами и профилями — и выбор между ними влияет на то, как быстро вы сможете диагностировать проблему.
Automatically manage signing
Xcode сам создаёт и обновляет сертификаты и provisioning-профили при каждой сборке. Удобно для соло-разработчиков и небольших команд, но иногда создаёт лишние сертификаты, если над одним App ID работают сразу несколько человек.
Manual signing
Разработчик сам выбирает конкретный сертификат и профиль для каждой конфигурации сборки. Даёт полный контроль и предсказуемость — обычно выбор команд с CI/CD-пайплайнами, где сборка происходит на выделенном сервере без интерактивного входа в Xcode.
Как диагностировать ошибку подписи за три шага
- Откройте Keychain Access и убедитесь, что нужный сертификат присутствует и не помечен как истёкший.
- В Xcode проверьте Signing & Capabilities — совпадает ли выбранный Team и профиль с ожидаемым.
- Если ошибка сохраняется, удалите Derived Data (папку кэша сборки) и пересоберите проект с нуля.
FAQ по приложениям в Apple Developer
Чем отличается Development и Distribution сертификат?
Development-сертификат нужен для тестирования на подключённых устройствах, Distribution — для публикации приложения через App Store или TestFlight.
Можно ли изменить bundle identifier после публикации?
Нет, App ID и bundle identifier нельзя изменить после первой отправки приложения в App Store — потребуется создавать новое приложение.
Почему приложение не устанавливается на тестовое устройство?
Чаще всего дело в том, что UDID устройства не добавлен в provisioning-профиль или профиль устарел после изменения Capabilities.
Нужен ли отдельный App ID для каждой платформы (iOS, macOS)?
Если это одно приложение с общим кодом, обычно достаточно одного App ID с поддержкой нужных платформ.
Что делать, если Xcode создаёт дубли сертификатов при работе в команде?
Перейти на ручное управление подписью (Manual signing) и договориться в команде об одном общем Distribution-сертификате вместо создания личных для каждого участника.
Итог
Подготовка приложения в Apple Developer — это не разовая настройка, а процесс, который нужно синхронизировать с каждым изменением кода: новые возможности требуют обновления Capabilities, профилей и сертификатов. Чек-лист перед загрузкой и понимание разницы между автоматическим и ручным управлением подписью экономят часы отладки на финальном этапе. Если вы ещё не оформили платную программу, необходимую для публикации, начните с материала «Apple Developer Program: как работает и что даёт».
