Как опубликовать приложение в App Store: пошаговая инструкция
Практика3 минРедакция Innovialabs
Коротко
Нужны активный Apple Developer Program, подписанная сборка, заполненная карточка в App Store Connect со скриншотами и политикой конфиденциальности; после ревью Apple вы выпускаете приложение сразу, по дате или поэтапно.
Коротко: путь от Xcode до App Store
Публикация в App Store — это пять шагов:
- Аккаунт в Apple Developer Program (платное членство на год).
- Подпись: Bundle ID, сертификат дистрибуции и provisioning profile.
- Карточка приложения в App Store Connect: название, описание, скриншоты, приватность.
- Загрузка сборки из Xcode или через CI.
- Ревью и релиз: отправка на проверку, затем выпуск — вручную, автоматически или поэтапно.
Первый раз процесс занимает больше времени из-за настройки, следующие релизы идут по накатанной.
Шаг 1. Сертификаты и provisioning
Apple проверяет, что сборка подписана именно вашей командой. Для этого нужны три вещи:
- App ID (Bundle ID) — уникальный идентификатор вида
uz.company.app. Создаётся в разделе Certificates, Identifiers & Profiles. Поменять его после публикации нельзя. - Сертификат Apple Distribution — подтверждает, что сборку подписала ваша команда.
- Provisioning profile типа App Store — связывает App ID, сертификат и включённые возможности (push, Sign in with Apple, iCloud).
Самый простой путь — Automatically manage signing в Xcode: он сам создаст сертификат и профиль. Ручное управление имеет смысл для CI и больших команд. Частая ошибка — потерянный приватный ключ сертификата: храните экспорт .p12 в защищённом хранилище команды.
Шаг 2. Карточка в App Store Connect
В App Store Connect откройте Apps → «+» → New App и укажите платформу, название, основной язык, Bundle ID и SKU (внутренний код, пользователи его не видят).
Затем заполните:
- App Information: категория, возрастной рейтинг (анкета), ссылка на политику конфиденциальности.
- App Privacy: какие данные собирает приложение и сторонние SDK (аналитика, реклама, crash-репортинг). Ответы должны совпадать с реальным поведением приложения.
- Pricing and Availability: цена или бесплатно, страны распространения.
Шаг 3. Метаданные и скриншоты
Для каждой локализации нужны:
| Поле | Что важно |
|---|---|
| Название и подзаголовок | Коротко, без ключевых слов через запятую |
| Описание | Что делает приложение и для кого |
| Ключевые слова | Ограниченное поле, не повторяйте название |
| Скриншоты | Обязательны для требуемых размеров экранов iPhone (и iPad, если поддерживается) |
| Support URL | Рабочая страница с контактами |
Скриншоты должны показывать реальный интерфейс приложения. Актуальные размеры смотрите в справке App Store Connect — Apple периодически их меняет.
Шаг 4. Загрузка сборки
- Выберите в Xcode схему с конфигурацией Release и устройство Any iOS Device.
- Увеличьте номер сборки (Build) — он должен быть уникальным для каждой загрузки.
- Product → Archive, затем в Organizer — Distribute App → App Store Connect.
После загрузки сборка какое-то время обрабатывается и появляется во вкладке TestFlight. Прогоните её на реальных устройствах через TestFlight до отправки на ревью.
Для автоматизации подойдёт fastlane:
lane :release do
build_app(scheme: "MyApp")
upload_to_app_store(skip_screenshots: true, skip_metadata: true)
end
Шаг 5. Ревью и поэтапный релиз
На странице версии выберите загруженную сборку и заполните App Review Information: контакты, заметки для ревьюера и демо-аккаунт, если в приложении есть вход. Без рабочего тестового логина отказ почти гарантирован.
Ответьте на вопрос об экспортном контроле (использование шифрования) и выберите способ выпуска:
- Manually release — вы сами нажимаете кнопку после одобрения.
- Automatically release — версия выходит сразу после одобрения.
- Scheduled — не раньше указанной даты.
Для обновлений доступен Phased Release: Apple постепенно раздаёт версию пользователям с автообновлением в течение 7 дней. Раскатку можно поставить на паузу, если в аналитике или crash-отчётах видна проблема. Пользователи, которые обновляются вручную, получают версию сразу.
Частые ошибки
- Забытый демо-аккаунт или аккаунт с истёкшим паролем.
- Политика конфиденциальности не открывается или не упоминает собираемые данные.
- Скриншоты с макетами вместо реальных экранов.
- Номер сборки не увеличен — загрузка отклоняется.
- Ответы в App Privacy не учитывают сторонние SDK.