Публікація мобільного додатку: 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. Тест-аккаунт не працює, демо-дані не завантажуються, частина екранів показує пустий стан без пояснень. Ревьюер бачить зламаний додаток. Рішення просте: заповнений тест-аккаунт із реалістичними даними, 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 (nutrition labels). Потрібно чесно задекларувати що збирається, навіщо, та linked to user або ні. Помилки тут не блокують публікацію відразу, але 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)—для додатків, яким важлива цілісність пристрою (банки, платіжні додатки, ігри з anti-cheat). Вимагає сервера для верифікації токена.
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. Код підписується автоматично при merge в 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 тижні.







