Публикация мобильного приложения: App Store, Google Play, ASO, процесс ревью, Fastlane
Готовое приложение — это ещё не опубликованное приложение. App Store отклоняет около 40% первых сабмитов по разным причинам, и часть из них — не технические, а политические. Google Play автоматизирован сильнее, но тоже имеет свои грабли: приложение может быть опубликовано и снято через 3 дня после первичного ревью, когда авторевьюер что-то дообнаружил.
App Store: ревью, которое нельзя торопить
Apple Review обычно занимает 24–48 часов (среднее в 2024 году по статистике Apple — около 90% приложений рассматриваются за сутки). Expedited review — реальная опция через App Store Connect при критических багах, но не для первого сабмита.
Частые причины отклонения, которые съедают время:
Guideline 2.1 — App Completeness. Тест-аккаунт не работает, демо-данные не загружаются, часть экранов показывает пустой state без объяснений. Ревьюер видит сломанное приложение. Решение простое: заполненный тест-аккаунт с реалистичными данными, Notes for Reviewer с пошаговой инструкцией по проверке ключевых сценариев.
Guideline 4.3 — Spam. Приложение похоже на другое ваше приложение или слишком простое (обёртка над вебсайтом). Это одна из самых субъективных причин. Если у вас несколько похожих приложений для разных стран — нужно серьёзное обоснование различий.
Guideline 5.1.1 — Data Collection and Storage. Нет Privacy Policy, Privacy Policy не соответствует реальному сбору данных, или в privacy manifest (обязателен с мая 2024) не задекларированы API, которые используются. Privacy Manifest — PrivacyInfo.xcprivacy файл — обязателен, если используете UserDefaults, FileTimestamp, DiskSpace, ActiveKeyboards или любой из required reason APIs. Apple начала отклонять без него в 2024.
Guideline 3.1.1 — Business — Payments. Внешние ссылки на оплату там, где должен быть IAP. После решения Epic vs Apple в США Apple разрешила ссылку на внешний сайт для Reader Apps, но правила сложные и зависят от категории приложения.
Отдельный момент — App Privacy Labels (нутришн лейблс). Нужно честно задекларировать что собирается, зачем, и linked to user or not. Ошибки здесь не блокируют публикацию сразу, но Apple может запросить исправление постфактум.
Google Play: автоматизация и скрытые сюрпризы
Google Play более автоматизирован, первичный ревью часто занимает несколько часов. Но есть нюансы.
Target SDK level — Google регулярно повышает требования. В 2024 году новые приложения должны таргетировать Android 14 (API 34). Существующие приложения получали уведомления об обязательном обновлении с дедлайнами. Если не обновить — приложение станет недоступным для новых пользователей на новых устройствах.
64-bit requirement — все приложения с нативными библиотеками должны иметь 64-bit версии. Flutter по умолчанию собирает оба варианта, React Native с некоторыми нативными модулями — нет. Проверяйте заранее.
Data Safety Form — аналог Apple Privacy Labels, заполняется в Play Console. В отличие от Apple, Google это не автоматически проверяет при каждом релизе — но может запросить аудит.
Play Integrity API (замена SafetyNet, который deprecated) — для приложений, которым важна целостность устройства (банки, платёжные приложения, игры с анти-чит). Требует сервера для верификации токена.
ASO: App Store Optimization
ASO влияет на органический трафик — это реальные загрузки без рекламного бюджета.
Ключевые факторы ранжирования в App Store и Google Play:
Название приложения — самый весомый фактор. Ключевые слова в названии работают лучше всего. Ограничение: App Store — 30 символов, Google Play — 50.
Ключевые слова (App Store) — поле 100 символов, только для App Store, не отображается пользователям. Без пробелов после запятых (экономит символы), не дублируйте слова из названия.
Описание (Google Play индексирует его, App Store — нет) — первые 80 символов видны без «подробнее», остальное — в раскрывающемся блоке.
Визуальные материалы — иконка, скриншоты, preview-видео. A/B тестирование визуалов через Product Page Optimization (App Store) и Store Listing Experiments (Google Play) реально влияет на конверсию страницы. Разница между плохим и хорошим скриншотом — 15–30% конверсии.
Рейтинг и отзывы — алгоритм учитывает свежесть, а не только среднее. Активная работа с отзывами (ответы) сигнализирует платформе об активном приложении. SKStoreReviewRequest.requestReview() (iOS) и ReviewManager.requestReview() (Android) — запрашивайте отзыв в правильный момент: после позитивного события, не при первом запуске.
Fastlane: автоматизация публикации
Ручная публикация — сертификаты, provisioning profiles, сборка, загрузка в App Store Connect или Google Play Console — занимает час и легко ошибиться. Fastlane автоматизирует весь пайплайн.
Ключевые lanes:
match — управление сертификатами и provisioning profiles через зашифрованный Git-репозиторий. Вся команда использует одни сертификаты, нет проблем «сертификат истёк на машине разработчика». fastlane match appstore — синхронизация перед сборкой.
gym (build) — fastlane gym --scheme "AppName" --configuration Release --export_method app-store. Через Gymfile параметры фиксируются в репозитории.
deliver (upload to App Store) — загружает бинарник, метаданные, скриншоты. Скриншоты можно держать в репозитории через fastlane snapshot (автоматическая генерация через XCUITest).
supply — аналог deliver для Google Play, поддерживает all tracks (internal, alpha, beta, production) с rollout параметром для поэтапного выкатывания.
Типичный Fastfile:
lane :release_ios do
match(type: "appstore")
gym(scheme: "App")
deliver(submit_for_review: true, automatic_release: false)
end
lane :release_android do
gradle(task: "bundle", build_type: "Release")
supply(track: "production", rollout: "0.1")
end
Интеграция с CI/CD: Fastlane + GitHub Actions или Bitrise — стандартный стек. Переменные среды для API ключей App Store Connect и Google Service Account. Код подписывается автоматически при мерже в main.
Поэтапный выкат и rollback
Google Play поддерживает постепенное развёртывание: rollout: "0.05" — 5% пользователей получают обновление сначала. Мониторим Crashlytics/Firebase Crashlytics, crash-free rate, ANR rate. Если показатели ухудшились — останавливаем rollout через Play Console без отзыва релиза.
App Store не имеет поэтапного выкатывания для обычных приложений (есть Phased Release для app updates — 7-дневный постепенный выкат). Для более гибкого управления используем feature flags (Firebase Remote Config, LaunchDarkly) — новый функционал выключен по умолчанию, включаем через конфиг без нового релиза.
Сроки подготовки к публикации
Подготовка первого релиза: настройка аккаунтов, сертификатов, метаданных, скриншотов, Privacy Policy — 3–5 рабочих дней при наличии всех материалов. Настройка Fastlane + CI/CD — 2–3 дня. Ревью App Store — 1–3 дня. Итого от готового приложения до публикации — 1–2 недели.







