Разработка iOS-приложения — это не просто написать код и нажать «Опубликовать». Между первым коммитом и значком на экране пользователя лежит несколько недель работы, тестирования, ожидания ревью и правок. Разберём каждый этап честно, без приукрашивания.

Как выглядит жизненный цикл в общих чертах

Есть пять крупных стадий:

  1. Разработка и локальная отладка
  2. Внутреннее тестирование
  3. Бета-тестирование через TestFlight
  4. Публикация в App Store
  5. Поддержка и обновления

Каждая из них имеет свои инструменты, свои риски и своё типичное время. Если где-то не додавить — это аукнется на следующем этапе.

Разработка и локальная отладка

Всё начинается в Xcode. Пишешь код, запускаешь на симуляторе или физическом устройстве через USB, смотришь логи в консоли. Звучит просто, но именно здесь закладывается 80% будущих проблем.

Симулятор vs реальное устройство. Симулятор удобен для быстрых проверок UI, но не воспроизводит многое: поведение камеры, Bluetooth, Push-уведомления, CoreMotion, реальную производительность на старом железе. Правило простое — любую фичу, которая касается железа, тестируй только на устройстве.

Инструменты отладки:

  • Xcode Debugger (LLDB) — точки останова, просмотр переменных, step-by-step выполнение
  • Instruments — профилировщик памяти, CPU, энергопотребления. Утечки памяти найти без него практически нереально
  • View Hierarchy Debugger — визуальный инспектор UI, показывает наложение слоёв и ограничения Auto Layout
  • Network Link Conditioner — симулирует медленный интернет. Незаменим, если приложение работает с сетью

Типичные ошибки на этом этапе. Разработчики часто тестируют только на своём устройстве с последней iOS и быстрым Wi-Fi. Потом выясняется, что на iPhone SE с iOS 15 всё крашит, а на мобильном интернете экраны загружаются по 10 секунд.

Проверяйте минимальную поддерживаемую версию iOS заранее. Если целевая аудитория — массовый потребитель, имеет смысл поддерживать iOS 15+. Если корпоративный клиент с управляемым парком устройств — можно ограничиться iOS 16+.

Внутреннее тестирование

Когда базовый функционал готов, приложение уходит на внутреннее QA. Это может быть отдельный тестировщик, команда или сам разработчик с чеклистом.

Что тестируется:

  • Основные сценарии использования (happy path)
  • Граничные случаи: пустые данные, очень длинные строки, отсутствие сети
  • Разные размеры экранов — от iPhone SE до iPhone 16 Pro Max
  • Разные версии iOS в рамках поддерживаемого диапазона
  • Поведение при прерываниях: звонок, уведомление, переключение приложений
  • Восстановление после крэша

Автоматизированные тесты. Хорошая практика — писать Unit-тесты для бизнес-логики и UI-тесты для критических пользовательских сценариев. Xcode поддерживает XCTest из коробки. UI-тесты медленные и ломаются при изменениях интерфейса, но зато ловят регрессии — когда правишь одно, а ломается другое.

Realistic target: покрытие Unit-тестами 60-70% бизнес-логики. Стопроцентное покрытие — академическая история, в реальных проектах это редкость.

TestFlight: бета-тестирование

TestFlight — официальный инструмент Apple для распространения бета-версий. Чтобы им воспользоваться, нужен аккаунт разработчика Apple Developer ($99/год) и первая сборка, загруженная через App Store Connect.

Внутренние тестировщики (Internal Testers) — до 100 человек из вашей команды. Сборки становятся доступны практически мгновенно, без ревью от Apple.

Внешние тестировщики (External Testers) — до 10 000 человек. Первая сборка проходит ревью от Apple (обычно 1-2 дня), последующие — быстрее. Можно приглашать по email или публичной ссылке.

Как организовать бету продуктивно. Не рассылай ссылку всем подряд — собери фокус-группу: 10-20 человек из целевой аудитории. Дай им конкретные задания, а не просто «потыкай и скажи что думаешь». Например: «Попробуй оформить заказ», «Найди раздел с настройками уведомлений». Так получишь конкретный фидбек, а не «всё норм».

TestFlight собирает крэши автоматически и присылает отчёты. Это ценнее любых опросников — реальные падения на реальных устройствах.

Срок жизни бета-сборки — 90 дней. После этого она перестаёт работать у тестировщиков. Если затянули с релизом, нужно загрузить новую сборку.

Подготовка к публикации

Прежде чем отправить приложение на ревью, нужно подготовить страницу в App Store. Это называется App Store Optimization (ASO) — и это не мелочь, это напрямую влияет на скачивания.

Что нужно подготовить:

  • Название — до 30 символов, включает ключевые слова
  • Подзаголовок — до 30 символов, дополняет название
  • Описание — до 4000 символов. Первые три строки видны без раскрытия — именно там должно быть главное
  • Ключевые слова — до 100 символов через запятую, только те слова, которых нет в названии и подзаголовке
  • Скриншоты — обязательны для iPhone и iPad (если поддерживается). Минимум 1, максимум 10. Размеры строго регламентированы Apple
  • Превью-видео — не обязательно, но конверсию поднимает
  • Иконка — 1024×1024 px, без альфа-канала

Скриншоты делают большинство разработчиков на скорую руку — это ошибка. Качественные скриншоты с читаемым текстом и понятным UX увеличивают конверсию посещения страницы в загрузку на 20-30% по данным A/B-тестов в App Store.

Технические требования перед сабмитом:

  • Сборка собрана в Release-конфигурации
  • Все разрешения (камера, микрофон, геолокация) имеют описание в Info.plist на языке пользователя
  • Приложение не использует приватные API Apple
  • Нет ссылок на другие магазины приложений или альтернативные способы оплаты (без специального разрешения)
  • Политика конфиденциальности — обязательна, если приложение собирает любые данные

Ревью в App Store

После загрузки сборки и заполнения метаданных отправляешь приложение на ревью. Обычно это занимает 1-3 рабочих дня. В периоды праздников (особенно Новый год) может растянуться до недели.

Что проверяет Apple:

  • Функциональность — приложение работает и делает то, что обещает
  • Соответствие гайдлайнам (Human Interface Guidelines)
  • Корректность описания — нет вводящих в заблуждение утверждений
  • Безопасность — нет вредоносного поведения
  • Монетизация — покупки внутри приложения оформлены через StoreKit
  • Конфиденциальность — соответствие заявленным разрешениям

Частые причины отклонения:

  1. Приложение крашит на реальном устройстве (ревьюеры тестируют на железе)
  2. Функции-заглушки — кнопки, которые ничего не делают
  3. Неработающий вход — если нужен логин, предоставь тестовый аккаунт
  4. Нарушение правил монетизации
  5. Несоответствие контента возрастному рейтингу
  6. Отсутствие объяснения для запрашиваемых разрешений

Если получил отказ (Rejection) — не паникуй. Apple присылает подробное описание проблемы. Исправляешь, загружаешь новую сборку, отвечаешь на ревью. Повторное ревью обычно проходит быстрее — 1-2 дня.

Можно обжаловать решение через Appeal процесс, если считаешь отказ необоснованным. Иногда это работает — особенно если ревьюер неправильно интерпретировал функциональность.

Релиз и первые дни

После одобрения можно сразу публиковать или поставить дату релиза вручную. Есть смысл не торопиться и подготовить анонс: соцсети, Product Hunt, профильные каналы.

Поэтапный релиз (Phased Release). Apple позволяет выкатывать обновления постепенно — 1%, 2%, 5%, 10%, 20%, 50%, 100% пользователей в течение 7 дней. Это страховка: если после релиза начались крэши, можно остановить раскатку и выпустить хотфикс.

Метрики, за которыми следят в первые дни:

  • Crash Rate — должен быть ниже 1% сессий
  • Рейтинг и отзывы — первые отзывы формируют восприятие
  • Конверсия страницы в загрузку
  • Retention Day 1 / Day 7 — сколько пользователей возвращается

Firebase Crashlytics и AppMetrica — стандартные инструменты для мониторинга крэшей и аналитики в iOS.

Обновления: жизнь после релиза

Приложение в App Store — это не финал, это старт. Большинство успешных приложений обновляются раз в 2-4 недели.

Зачем обновляться регулярно:

  • Новые версии iOS могут ломать существующее поведение — нужно адаптироваться
  • Apple периодически ужесточает требования к SDK — устаревшие сборки перестают принимать
  • Начиная с iOS 17, приложения, которые не обновлялись больше 3 лет, могут быть скрыты из поиска
  • Пользователи ожидают развития продукта

Процесс обновления — тот же самый: разработка, тестирование, TestFlight, ревью. Но для обновлений ревью обычно проходит быстрее — 1-2 дня. Если использовать поэтапный релиз, риски минимальны.

Примечания к обновлению (What's New). Их читают — особенно лояльные пользователи. Пиши честно: что исправили, что добавили. «Исправлены ошибки и улучшена производительность» — это уважение к пользователям на уровне нуля.

Хотфиксы. Если после релиза обнаружился критический баг — крэш при старте, потеря данных — Apple предоставляет ускоренное ревью (Expedited Review). Нужно объяснить срочность. Обычно рассматривают за несколько часов.

Аккаунт разработчика и организационные моменты

Apple Developer Program стоит $99/год для физлиц и организаций. Без него невозможно публиковать в App Store и использовать TestFlight для внешних тестировщиков.

Для компаний есть смысл регистрировать аккаунт на юрлицо — тогда в App Store отображается название компании, а не имя разработчика. Процесс регистрации для организаций сложнее: нужен D-U-N-S номер, занимает до 2 недель.

Если приложение разрабатывается под конкретный бизнес — уточните сразу, кто будет владельцем аккаунта. Передача приложения между аккаунтами возможна, но это дополнительная бюрократия.

Реалистичные сроки

Часто спрашивают: сколько времени занимает путь от идеи до App Store?

Для MVP с базовым функционалом:

  • Разработка: 4-12 недель (зависит от сложности)
  • Внутреннее тестирование: 1-2 недели
  • TestFlight бета: 1-3 недели
  • Подготовка страницы App Store: 3-5 дней
  • Ревью Apple: 1-3 дня

Итого: 2-4 месяца от начала разработки до релиза — для типичного приложения среднего масштаба. Простые утилиты можно выпустить за месяц. Сложные сервисные приложения с серверной частью — за полгода и больше.

Когда клиенты в REEXY спрашивают про мобильную разработку, первый вопрос всегда про сроки. Честный ответ — «зависит от требований», но реалистичный минимум для чего-то рабочего — 6-8 недель с момента согласования ТЗ.

Что упускают при планировании

Несколько вещей, которые регулярно выбивают проекты из графика:

Ревью занимает больше, чем думают. Закладывай неделю на первый сабмит с запасом на один Rejection.

Сертификаты и профили. Provisioning Profiles, сертификаты подписи, Push Notification entitlements — это отдельная экосистема со своими сроками действия. Просроченный сертификат в продакшне — это падение сборки у всех пользователей.

Совместимость с новой iOS. Apple анонсирует новую iOS в июне на WWDC, выпускает в сентябре. Между анонсом и релизом — бета-версии. Хорошая практика — тестировать на бете с июля, чтобы не получить сюрпризы в сентябре.

App Store Review Guidelines меняются. Правила обновляются — иногда то, что было разрешено год назад, теперь требует доработки. Перечитывай гайдлайны перед каждым крупным обновлением.

Локализация. Если планируете международный рынок, локализация — это не просто перевод строк. Дата-форматы, числа, направление текста (RTL для арабского), юридические требования разных стран — всё это добавляет время.


Жизненный цикл iOS-приложения — это итеративный процесс. Первый релиз редко бывает идеальным, и это нормально. Главное — выстроить цикл: собрал данные, приоритизировал, исправил, выпустил. Приложения, которые перестают обновляться, теряют пользователей быстрее, чем кажется.