Публикация сборки в TestFlight начинается не с кнопки «Загрузить», а с проверки аккаунта Apple Developer: без активной платной подписки разработчика кнопка архивации в Xcode останется недоступной, а App Store Connect не даст создать запись приложения. Это первое, что нужно проверить, если на этапе выгрузки появляются ошибки сертификатов или профилей подписи.
TestFlight — официальный сервис Apple для бета-тестирования iOS-приложений. Он позволяет раздать сборку тестировщикам до релиза в App Store, собрать отзывы и отчёты о сбоях. Ниже разберём весь путь: от подготовки проекта до отправки ссылки тестировщикам, а также типичные ошибки, из-за которых сборка не появляется в системе.
Что нужно подготовить перед загрузкой
Прежде чем выкладывать приложение в TestFlight, убедитесь, что у вас есть три обязательных компонента: оплаченная учётная запись Apple Developer Program, установленный Xcode актуальной версии и проект, который собирается без ошибок для реального устройства, а не только для симулятора.
Также потребуется уникальный Bundle ID — идентификатор приложения вида com.company.appname. Его нельзя будет изменить после создания записи в App Store Connect, поэтому продумайте название заранее.
- 🍎 Активная подписка Apple Developer Program, оформленная на вас или организацию
- 💻 Mac с установленным Xcode и настроенной командой разработки (Team)
- 📱 Проект с корректным Bundle ID и версией сборки
- 🔑 Сертификаты и профили подписи — обычно Xcode управляет ими автоматически
⚠️ Внимание: TestFlight доступен только для платформ Apple. Выложить Android-приложение через TestFlight невозможно — для Android используется Google Play Console с треком внутреннего тестирования.
Шаг 1. Создание записи приложения в App Store Connect
Запись приложения создаётся на сайте App Store Connect. Войдите под учётной записью разработчика, откройте раздел «Мои приложения» и нажмите кнопку добавления нового приложения. Система попросит указать платформу, название, основной язык и Bundle ID из списка зарегистрированных идентификаторов.
Поле SKU — внутренний идентификатор для ваших отчётов, его видите только вы. Укажите любую удобную строку, например myapp-ios-001. После сохранения запись появится в списке, и для неё станет доступна вкладка TestFlight.
Шаг 2. Архивация и загрузка сборки из Xcode
Основной этап — выгрузка сборки. В Xcode выберите целевое устройство Any iOS Device в верхней панели, затем откройте меню Product → Archive. Начнётся архивация: Xcode соберёт релизную версию и откроет окно Organizer со списком архивов.
Выделите свежий архив и нажмите Distribute App. Далее мастер предложит способ распространения — выберите App Store Connect, затем Upload. На следующих шагах оставьте настройки подписи по умолчанию, если используете автоматическое управление сертификатами, и подтвердите загрузку.
Product → Archive → Distribute App → App Store Connect → Upload
☑️ Проверка перед загрузкой архива
Загрузка занимает от нескольких минут до получаса в зависимости от размера приложения и скорости соединения. После завершения Xcode покажет уведомление об успехе, но это ещё не конец: сборке нужно время на обработку на серверах Apple.
⚠️ Внимание: если сборка загрузилась, но не появляется в App Store Connect, проверьте почту разработчика. Apple присылает письмо с описанием проблемы — чаще всего это отсутствие значка приложения нужного размера или незаполненные сведения о конфиденциальности.
Шаг 3. Обработка сборки и заполнение информации
После выгрузки сборка проходит автоматическую обработку. В разделе TestFlight вашей записи в App Store Connect она сначала отображается со статусом «Обработка», затем становится доступной для настройки. Обычно это занимает от нескольких минут до часа, но точные сроки не гарантируются.
Перед тем как приглашать тестировщиков, заполните сведения о бета-версии: описание того, что тестируется, и контактный email для обратной связи. Для внешнего тестирования также потребуется указать данные бета-проверки — Apple проверяет сборки, которые рассылаются людям вне вашей команды.
Что такое номер сборки и зачем его менять
Build (номер сборки) — технический идентификатор каждой загрузки. Apple не позволяет загрузить две сборки с одинаковым номером для одной версии. Перед каждой новой выгрузкой увеличивайте значение Build в настройках проекта Xcode во вкладке General, иначе загрузка завершится ошибкой дубликата.
Шаг 4. Добавление тестировщиков
TestFlight поддерживает два типа участников. Внутренние тестировщики — члены вашей команды в App Store Connect (до 100 человек), они получают доступ к сборке сразу, без проверки Apple. Внешние тестировщики — любые пользователи по приглашению, их количество ограничено большим лимитом, но первая сборка для них проходит бета-проверку Apple.
Чтобы добавить внешних тестировщиков, создайте группу во вкладке TestFlight, привяжите к ней сборку и добавьте адреса электронной почты участников. Альтернатива — публичная ссылка: её можно включить для группы и распространять где угодно, тогда пользователи подключаются к тестированию самостоятельно.
- 👥 Внутренние тестировщики — команда в App Store Connect, доступ без проверки
- ✉️ Внешние по email — приглашение отправляется на почту, требуется бета-проверка первой сборки
- 🔗 Публичная ссылка — открытый доступ для любого, у кого есть ссылка
- 📲 Тестировщику нужно установить приложение TestFlight из App Store на своё устройство
Сроки жизни сборки и ограничения
Каждая сборка в TestFlight активна ограниченное время — по общеизвестным правилам сервиса это 90 дней с момента загрузки. После истечения срока тестировщики не смогут запускать эту версию, поэтому для продолжения тестирования нужно выгружать свежие сборки.
| Параметр | Внутреннее тестирование | Внешнее тестирование |
|---|---|---|
| Кто участвует | Команда App Store Connect | Любые приглашённые пользователи |
| Проверка Apple | Не требуется | Требуется для первой сборки группы |
| Скорость доступа | Сразу после обработки | После прохождения бета-проверки |
| Публичная ссылка | Недоступна | Доступна |
Обратите внимание: сборка из TestFlight и сборка для App Store — это одна и та же загрузка. После завершения тестирования ту же сборку можно отправить на полный обзор и опубликовать в магазине, не пересобирая проект.
Типичные ошибки и их решения
Самая частая проблема — ошибка подписи на этапе архивации. Возможная причина: истёкший сертификат разработчика или конфликт профилей. Проверьте в настройках проекта во вкладке Signing & Capabilities, что включено автоматическое управление подписью и выбрана правильная команда.
Вторая распространённая ситуация — сборка зависла в статусе «Обработка» надолго. Обычно помогает просто подождать, но если прошло несколько часов, проверьте почту: Apple могла отклонить сборку из-за отсутствующих значков или устаревшей версии SDK. Третий типичный случай — тестировщик не получил приглашение: письмо могло попасть в спам, а для публичной ссылки убедитесь, что сборка привязана именно к той группе, где включена ссылка.
Часто задаваемые вопросы
Можно ли выложить приложение в TestFlight без платного аккаунта разработчика?
Нет. Загрузка сборок в App Store Connect и TestFlight требует активной подписки Apple Developer Program. Бесплатная учётная запись позволяет запускать приложение только на собственном устройстве через Xcode с ограничениями.
Сколько времени занимает обработка сборки после загрузки?
Обычно от нескольких минут до часа, но точные сроки Apple не гарантирует. Если сборка не появилась спустя несколько часов, проверьте почту разработчика на наличие писем об ошибках.
Нужно ли проходить ревью Apple для TestFlight?
Для внутренних тестировщиков — нет, сборка доступна сразу после обработки. Для внешних групп первая сборка проходит сокращённую бета-проверку, последующие сборки той же версии обычно проверяются быстрее или не требуют повторной проверки.
Как тестировщик установит моё приложение?
Ему нужно установить бесплатное приложение TestFlight из App Store, затем перейти по приглашению из письма или по публичной ссылке и принять участие в тестировании. После этого приложение установится как обычное.
Что делать, когда у сборки истёк срок действия?
Срок действия сборки ограничен 90 днями. Увеличьте номер Build в Xcode, создайте новый архив и загрузите его повторно — тестировщики получат обновление автоматически или по уведомлению.