Guideline 2.1: как понять и исправить отказ App Store
Автор: Mehdi Azizi
Обновлено , 9 мин
Guideline 2.1 App Completeness: что покрывает правило, как Apple тестирует приложение, что ответить ревьюеру и 3 реальных отказа моих приложений.
Guideline 2.1 валит больше всего заявок. Apple сама пишет об этом на своей странице App Review: в среднем больше 40 % нерешённых проблем относятся к 2.1, то есть к правилу про вылеты, временный контент и неполную информацию.
Эта статья только про это правило: что оно охватывает, два его варианта, как ревьюер тестирует твоё приложение и что ему отвечать. Плюс три отказа, которые я получил на своих собственных приложениях. Если нужен общий обзор всех причин отказа, лучше прочитай, почему Apple отклоняет приложение.
Что такое guideline 2.1 App Completeness?
Guideline 2.1 требует, чтобы отправленное в Apple приложение было финальной и полной версией: без вылетов, без битых ссылок, без временного текста, с демо-аккаунтом, если нужен вход, и с видимыми и рабочими встроенными покупками. Если ревьюер не может пройти твоё приложение до конца, это отказ по 2.1.
Официальный текст есть в App Review Guidelines, раздел 2 «Performance». Он делится на два пункта.
2.1(a) требует, чтобы каждая заявка была финальной версией со всеми метаданными и рабочими URL. Временный текст, пустые сайты и любой временный контент нужно убрать до отправки. Приложение должно быть протестировано на реальном устройстве на баги и стабильность. Если нужен вход, ты даёшь демо-аккаунт и держишь сервер включённым. Встроенный демо-режим может заменить аккаунт, но только с предварительного согласия Apple, и он должен показывать все функции приложения. Фраза, которая всё подытоживает: «We will reject incomplete app bundles and binaries that crash».
2.1(b) касается встроенных покупок: они должны быть полными, актуальными, видимыми для ревьюера и рабочими. Если покупку, настроенную в App Store Connect, невозможно найти в приложении, ты должен объяснить почему в заметках для ревью.
Что guideline 2.1 охватывает на практике
На практике отказ по 2.1 прилетает по одной из этих причин:
- Вылет. При запуске, после отклонённого разрешения, без сети. Достаточно одного.
- Битая ссылка. Конфиденциальность, условия использования, поддержка: каждый указанный URL откроют.
- Недоступная функция. Кнопка, которая никуда не ведёт, обязательный экран, который нельзя пройти, онбординг без выхода. Самый коварный вариант: на твоём телефоне этого не видно.
- Отсутствующий или просроченный демо-аккаунт. Ревьюер застревает на экране входа, или выданный аккаунт больше не работает, или сервер выключен.
- Контент-заглушка. Lorem ipsum, «Скоро будет», пустой экран, видимые тестовые данные.
- Ненаходимые встроенные покупки. Подписка есть в App Store Connect, но ревьюер не находит экран, где она продаётся, или покупка падает в sandbox. Самые частые ошибки экрана оплаты собраны в статье paywall в iOS: 7 ошибок новичка.
2.1 Information Needed или 2.1(a): в чём разница?
Сообщения Apple называются по-разному, и от этого зависит твой ответ.
«Guideline 2.1 - Information Needed» значит, что ревьюер не смог довести проверку до конца и задаёт тебе вопрос. Не хватает логина, объяснения, способа добраться до функции. Это ещё не констатация бага, а запрос. Иногда достаточно точного ответа в App Store Connect. Но если вопрос выявляет реальную блокировку в приложении, нужен новый билд.
«Guideline 2.1(a) - Performance - App Completeness» значит, что ревьюер обнаружил проблему: вылет, баг, экран, который не реагирует. В сообщении обычно указано устройство, и часто приложен скриншот. Тут надо исправить, отправить новый билд, а потом ответить.
Как Apple тестирует твоё приложение
Поставь себя на место ревьюера. Важны три момента.
Он тестирует на устройстве, которого у тебя может не быть. В сообщении об отказе часто указана модель. Правило 2.4.1 говорит, что приложения для iPhone по возможности должны работать на iPad, а приложение, сделанное для iPhone, отображается там в режиме совместимости, в окне формата iPhone. Мои недавние отказы по 2.1 пришли с iPad Air: если ты тестируешь только на своём iPhone, ты не видишь того, что видит ревьюер.
Он начинает с первого запуска. Чистое приложение, без кэша, без сессии, без скачанных обновлений.
Сеть должна работать только по IPv6. Правило 2.5.5, соседнее с guideline 2.5.4 про фоновые режимы, требует, чтобы приложение полностью работало в сети только с IPv6, а страница поддержки Apple про IPv6 делает это обязательным для всех приложений, отправленных с 1 июня 2016 года. Риск возникает из-за жёстко прописанного IPv4-адреса: Apple советует тестировать в сети только с IPv6, с выключенными мобильными данными.
Чтобы воспроизвести эти условия до отправки, проще всего использовать TestFlight на нескольких устройствах: смотри TestFlight: как тестировать приложение для iPhone.
Три отказа, которые я получил, и их настоящая причина
Три недавних отказа на моих собственных приложениях, с их настоящей причиной.
Solys: демо мини-игры, которую невозможно выиграть на iPad
Solys это мой будильник с мини-играми. 18 августа 2026 года билд отклонили с «2.1 Information Needed»: Apple просила способ пройти игровую миссию. Ревьюер тестировал на iPad Air, с iPhone-приложением в режиме совместимости.
Настоящая причина была в демо мини-игры в онбординге. Высоты препятствий были прописаны в фиксированных точках. При доступной высоте карточки на iPad в режиме совместимости проход становился уже персонажа: выиграть демо было невозможно. А кнопка «Продолжить» загоралась только после победы. Выхода нет: ревьюер не мог увидеть приложение.
Исправление: геометрия, пропорциональная измеренному размеру карточки, и ссылка «Пропустить демо», которая появляется после поражения.
Урок: у любого шага, который блокируется результатом игрока, должен быть выход без условий. И каждый обязательный экран надо тестировать на самом маленьком поддерживаемом экране И на iPad в режиме совместимости.
Nolera: исправление, невидимое для ревьюера
17 сентября 2026 года Nolera отклонили после проверки на iPad Air. В сообщении была 2.1(a) вместе с другими пунктами. Исправление указанной проблемы я выкатил через удалённое обновление (OTA), без нового билда.
Проблема: при самом первом запуске ревьюер видит код, вшитый в билд, а не обновление, скачанное потом. Для него исправления не существовало.
Урок: исправление, предназначенное для ревью, должно быть в бинарнике, отправленном в Apple.
Clic: причина была не в приложении
16 сентября 2026 года Clic отклонили. Само приложение было актуальным. Настоящая причина была в другом: опубликованная политика конфиденциальности не была обновлена насчёт используемого ИИ-провайдера. Этот отказ скорее про конфиденциальность, чем про 2.1, но иллюстрирует то же самое: настоящие причины не всегда те, на которые намекает сообщение.
Урок: проверяй то, что лежит онлайн, а не то, что в твоём репозитории. Открой каждый указанный URL в день отправки.
Что ответить в Resolution Center
После отказа твоя заявка переходит в статус «Unresolved Issues», а переписка с Apple идёт в разделе App Review твоего приложения, который до сих пор называют Resolution Center. Официальная процедура, как ответить App Review, позволяет сообщение максимум на 4 000 символов с одним вложением.
Пиши на английском, сдержанно. Ревьюеру нужны три вещи: что блокировало, что изменилось, как это проверить. Вот шаблон, которым я пользуюсь (замени номер билда и исправление на свои):
Hello,
Thank you for your review.
Issue: the onboarding game demo could not be completed on iPad
(iPhone app running in compatibility mode), so the user could
not continue.
Fix in build 1.0.3 (42):
- The game layout now scales to the measured screen size.
- A "Skip demo" link appears after a failed attempt, so the
onboarding can always be completed.
How to verify: launch the app, start the onboarding demo,
lose once, then tap "Skip demo".
A screen recording is attached.
Best regards,
Несколько правил:
- Отвечай на заданный вопрос. На «Information Needed» начинай с точного ответа, а не с контекста.
- Назови билд и дай путь к исправленному экрану, в три-четыре действия.
- Приложи доказательство. Короткое видео на устройстве, близком к устройству ревьюера, избавит от ещё одного круга.
- Без оправданий. Апелляция в App Review Board существует, но при заслуженном отказе по 2.1 она только удлиняет ожидание. Подробно про сроки в статье сроки проверки в App Store.
Если после прочтения причина всё ещё непонятна, полный порядок действий описан на странице приложение отклонено Apple.
Заметки для ревью и демо-аккаунт
Раздел App Review Information твоей версии в App Store Connect это твоя лучшая защита от 2.1. Согласно официальному описанию этих полей, он содержит:
- Sign-in required: логин и пароль демо-аккаунта. Этот аккаунт не должен истекать. Если в приложении используется сторонний вход, дай данные для входа в этот сервис.
- Notes: до 4 000 байт, на любом языке. Всё, что помогает тестировать.
- Contact: имя, e-mail и номер в международном формате.
Что я всегда пишу в заметках:
- Путь к каждой встроенной покупке, как требует правило 2.1(b).
- Неочевидные функции: жест, разрешение, контент, привязанный ко времени.
- Состояние демо-аккаунта: с подпиской или без, с заполненными данными или пустой.
- Известные ограничения: для оборудования или окружения, которое трудно воспроизвести, Apple просит быть готовым прислать видео.
И одно правило вне формы: держи сервер включённым всё время ревью. Выключенный тестовый сервер означает неработающий демо-аккаунт, а значит, отказ по 2.1.
Чеклист по 2.1 перед отправкой
Тот, по которому я прохожусь перед каждой отправкой, составлен на основе моих отказов:
- Приложение установлено с нуля на самом маленьком поддерживаемом iPhone, на самом большом и на iPad в режиме совместимости
- Онбординг пройден целиком, с намеренным провалом на каждом шаге, где нужен результат игрока
- У каждого обязательного экрана есть выход без условий
- Ни одно исправление для ревью не доставлено только через удалённое обновление
- Приложение запущено в авиарежиме, а потом в сети только с IPv6
- Каждый указанный URL открыт в тот же день: конфиденциальность, условия, поддержка
- Нигде не видно временного текста, пустого экрана или тестовых данных
- Демо-аккаунт проверен в день отправки, без срока действия, сервер включён
- Каждая встроенная покупка находится из приложения и протестирована в sandbox, включая восстановление
- В заметках для ревью указано, где найти покупки и неочевидные функции
Если это твоя первая публикация, все предыдущие шаги описаны в статье как опубликовать приложение в App Store.
Отправь заявку вместе с тем, кто уже получал эти отказы
Apple Review Kit собирает мой чеклист перед отправкой, шаблоны заметок для тестировщика и skills для Claude Code, которые проверяют твой проект до того, как ты его отправишь.
Только что получил отказ по 2.1? Кит также поможет найти указанное правило, понять, что оно требует, и даст пример исправления и ответа. Если хочешь разобрать твою заявку вместе прямо сейчас, забронируй час со мной по видеосвязи.
Никто не может гарантировать, что Apple примет твоё приложение. Что я могу, так это помочь тебе избежать отказов по 2.1, за которые я уже заплатил циклом ревью.
Ещё не отправил приложение? Бесплатная диагностика пришлёт тебе мой чеклист против отказов Apple, включая правило 2.1, и скажет, что осталось сделать до отправки. Если ты ещё на этапе разработки, на главной показано, как создать мобильное приложение, с самого начала думая о ревью.
Частые вопросы
Что значит «Guideline 2.1 - Information Needed»?
Ревьюер не смог закончить проверку и задаёт тебе вопрос: логин, объяснение, способ добраться до функции. Ответь точно в App Store Connect. Если вопрос выявляет реальную блокировку в приложении, как у Solys, исправь её и отправь новый билд.
Нужен ли новый билд после отказа по 2.1?
Для вылета, бага или блокирующего экрана да: исправление должно быть в бинарнике. Удалённого обновления недостаточно, потому что при первом запуске ревьюер видит вшитый код. Если просто не хватало информации, может хватить ответа.
Моё приложение требует входа: что дать ревьюеру?
Демо-аккаунт без срока действия, указанный в разделе App Review Information, и включённый сервер на всё время ревью. Встроенный демо-режим может заменить аккаунт только с предварительного согласия Apple, и он должен показывать все функции.
Может ли отказ по 2.1 быть вызван не самим приложением?
Да. Достаточно битого URL в карточке, просроченного демо-аккаунта, выключенного сервера или неправильно настроенной встроенной покупки. А иногда, как у Clic, настоящая причина лежит онлайн, а не в коде: проверь всё, что может открыть ревьюер.