Я уже проходил процесс публикации своего приложения Expo в Google Play. Если вы читали ту статью, то знаете, что Google Play и App Store — очень разные звери. У Apple своя экосистема, инструменты, процесс проверки и свои способы усложнить жизнь.
Это моё пошаговое руководство по публикации приложения Expo в iOS App Store: от создания аккаунта Apple Developer до нажатия «Submit for Review». Здесь всё, что я хотел бы знать до начала.
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
- Рабочий проект Expo (managed или bare workflow)
- Mac или доступ к нему. Apple требует macOS для нативной сборки приложений iOS, хотя EAS Build может обойти это ограничение.
- Установленный Xcode (последняя стабильная версия)
- Apple ID
❇️ Шаг 1: вступите в Apple Developer Program
Это первое препятствие. В отличие от единоразового платежа $25 для Android, Apple берёт $99 в год.
- Перейдите на developer.apple.com
- Нажмите «Account» и войдите с помощью Apple ID
- Вступите в Apple Developer Program
- Введите личные данные или данные организации
- Оплатите $99
После одобрения у вас появится доступ к App Store Connect и Apple Developer Portal — двум основным панелям для всех следующих шагов.
❇️ Шаг 2: настройте приложение в App Store Connect
В App Store Connect вы управляете карточкой приложения, сборками, ценами и отправкой на проверку.
- Перейдите на appstoreconnect.apple.com
- Нажмите кнопку «+» и выберите «New App».
- Введите данные приложения:
- Платформа: iOS
- Название: отображаемое название приложения (выбирайте внимательно, изменить его сложно)
- Bundle ID: должен точно совпадать со значением в конфигурации Expo
- SKU: уникальный внутренний идентификатор
- Нажмите «Create».
Запись о вашем приложении теперь есть в App Store Connect. Сборки пока нет — только контейнер приложения.
❇️ Шаг 3: настройте проект Expo для iOS
Откройте app.json (или app.config.js) и убедитесь, что раздел iOS заполнен полностью:
{
"expo": {
"name": "Your App Name",
"slug": "your-app-slug",
"version": "1.0.0",
"ios": {
"bundleIdentifier": "com.yourname.yourapp",
"buildNumber": "1",
"supportsTablet": true,
"infoPlist": {
"NSCameraUsageDescription": "We need camera access to...",
"NSPhotoLibraryUsageDescription": "We need photo access to..."
}
}
}
}Что нужно проверить особенно внимательно:
- bundleIdentifier должен точно совпадать со значением, зарегистрированным в App Store Connect.
- Увеличивайте buildNumber при каждой загрузке, даже если версия не меняется.
- Добавьте в infoPlist каждое разрешение, которое использует приложение, с понятным описанием. Apple может отклонить приложение, если они отсутствуют или сформулированы расплывчато.
❇️ Шаг 4: разберитесь с сертификатами и профилями подготовки
Именно здесь Apple больше всего отличается от Android и именно здесь многие разработчики теряют часы. Вам нужны две вещи:
- Distribution Certificate, подтверждающий, что сборка создана вами
- Provisioning Profile, связывающий Bundle ID вашего приложения с сертификатом и разрешающий распространение
Вариант А: доверьте всё EAS (рекомендуется)
Если вы используете EAS Build, он может управлять всем этим автоматически:
npx eas-cli credentialsEAS предложит войти в аккаунт Apple, затем сгенерирует и сохранит всё необходимое за вас.
Вариант Б: вручную через Xcode или Apple Developer Portal
- В Apple Developer Portal откройте Certificates, IDs & Profiles.
- Создайте новый iOS Distribution Certificate.
- Создайте App ID, совпадающий с Bundle Identifier.
- Создайте Distribution Provisioning Profile, который связывает их.
💡 Вывод: по возможности не держите несколько сертификатов разработчика. Apple ограничивает их число на аккаунт, а отзыв сертификата делает недействительными все использующие его профили подготовки.
❇️ Шаг 5: соберите приложение
Через EAS Build (рекомендуется)
npm install -g eas-cli
eas login
eas build:configureНастройте eas.json для продакшена:
{
"build": {
"production": {
"ios": {
"distribution": "store"
}
}
}
}Затем запустите сборку:
eas build --platform ios --profile productionEAS собирает приложение в облаке, подписывает код и выдаёт файл .ipa, готовый к загрузке. Mac для этого шага не нужен.
Через Xcode (локальная сборка)
npx expo run:ios --configuration ReleaseИли откройте папку ios/ в Xcode, выберите «Any iOS Device» в качестве цели и выберите Product → Archive.
❇️ Шаг 6: загрузите сборку в App Store Connect
Вариант А: EAS Submit (проще всего)
eas submit --platform ios --latestВариант Б: Transporter — скачайте его из Mac App Store, войдите, добавьте файл .ipa и нажмите «Deliver».
Вариант В: Xcode Organizer — после архивации откройте Window → Organizer, найдите архив и выберите Distribute App → App Store Connect → Upload.
❇️ Шаг 7: протестируйте в TestFlight
Перед отправкой в App Store всегда тестируйте через TestFlight.
- В App Store Connect откройте TestFlight.
- После обработки сборки добавьте Internal Testers (до 100 человек из вашей команды).
- Для External Testers сначала отправьте сборку на Beta App Review (обычно 1–2 дня).
❇️ Шаг 8: подготовьте карточку в App Store
Apple требует всё перечисленное ниже перед отправкой:
- Название (до 30 символов) и подзаголовок (до 30 символов)
- Категория (основная и необязательная дополнительная)
- URL политики конфиденциальности (обязательно)
- Описание (до 4000 символов; первые строки должны быть самыми сильными)
- Ключевые слова (до 100 символов в сумме, через запятую)
Скриншоты — Apple требует определённые размеры:
- iPhone 6,9 дюйма (iPhone 16 Pro Max) — обязательно
- iPhone 6,7 дюйма (iPhone 14 Plus / 15 Plus) — необязательно, но рекомендуется
- iPad Pro 13 дюймов (M4) — обязательно, если приложение поддерживает iPad
❇️ Шаг 9: задайте цену и доступность
- Откройте Pricing and Availability.
- Выберите «Free» или задайте ценовой уровень.
- Выберите территории, в которых хотите распространять приложение (по умолчанию — все).
- Задайте дату доступности (необязательно).
❇️ Шаг 10: заполните анкету конфиденциальности приложения
Apple требует заявить, как вы обрабатываете данные. Эта информация становится Privacy Nutrition Label на странице вашего приложения в App Store. В App Store Connect откройте App Privacy и отвечайте честно: какие данные вы собираете, связаны ли они с личностью пользователя и используются ли для отслеживания.
❇️ Шаг 11: отправьте на проверку
В разделе Review Information оставьте заметку для проверяющего из Apple. Если для входа в приложение нужна учётная запись, укажите здесь тестовые данные. Затем выберите Add for Review → Submit to App Review.
❇️ Шаг 12: выпуск!
После одобрения статус приложения меняется на «Ready for Sale». При отправке вы выбираете один из вариантов:
- Выпуск вручную: вы сами решаете, когда приложение станет доступно.
- Автоматический выпуск: приложение становится доступным сразу после одобрения.
🎉 Поздравляю — ваше приложение в App Store.
❇️ Подведём итоги
Процесс в App Store менее прозрачен, чем в Google Play, но последующие релизы после первого проходят гораздо легче. Больше всего времени уходит на:
- Сертификаты и профили подготовки — доверьте их EAS.
- Скриншоты — выделите на них время для настоящего дизайна.
- Первую проверку — заложите 1–3 дня и убедитесь, что ничего не падает.
Экосистема Apple сложнее в освоении, но аудитория App Store ценна, а высокие стандарты качества работают в вашу пользу, когда вы уже внутри. Удачного выпуска! 🚀
Если материал оказался полезным, я также писал о том, как опубликовать приложение Expo в Google Play — такой же пошаговый разбор для Android. Мои приложения также можно найти в vladsiu.com.
