Частые причины отказа в App Store и Google Play и как их исправить
Практика3 минРедакция Innovialabs
Коротко
Большинство отказов — это краши, отсутствие демо-доступа, неверные платежи, проблемы с приватностью и слишком простой функционал; почти всё лечится проверкой по чек-листу до отправки и вежливым точным ответом ревьюеру.
Коротко: почему отклоняют приложения
Отказ почти никогда не бывает случайным. И Apple, и Google отклоняют приложения по одним и тем же группам причин:
- приложение падает или не работает у ревьюера;
- ревьюер не может войти или увидеть основной функционал;
- цифровые товары продаются в обход встроенных покупок;
- приватность: нет политики, неверные декларации данных, лишние разрешения;
- приложение слишком простое или повторяет сайт;
- метаданные не соответствуют содержимому.
В письме об отказе всегда указан пункт правил. Начинайте с него, а не с переписывания кода.
Причины и исправления
| Причина | Как исправить |
|---|---|
| Краш или зависание при запуске | Тестируйте релизную сборку на чистом устройстве и последней версии ОС, подключите crash-репортинг |
| Плейсхолдеры, «скоро будет», битые ссылки | Уберите незаконченные экраны или скройте их за фича-флагом |
| Нет доступа для ревьюера | Дайте рабочий демо-аккаунт с данными; в Google Play заполните раздел App access |
| Цифровой контент продаётся мимо магазина | Используйте StoreKit и Google Play Billing для подписок и цифровых товаров |
| Нет политики конфиденциальности или она пустая | Опубликуйте страницу, где описаны собираемые данные, цели и контакты |
| Декларации данных не совпадают с реальностью | Сверьте App Privacy и Data safety со всеми SDK в проекте |
| Нельзя удалить аккаунт | Добавьте удаление аккаунта внутри приложения, если в нём можно зарегистрироваться |
| Минимальный функционал | Добавьте ценность, которой нет у сайта: офлайн, push, нативные функции |
| Скриншоты и описание не про это приложение | Показывайте реальные экраны, без чужих брендов и обещаний |
Особенности Apple
- Guideline 2.1 (App Completeness) — самая частая группа: краши, баги, нет демо-доступа. Проверяйте сборку через TestFlight перед отправкой.
- Guideline 4.2 (Minimum Functionality) — приложение-обёртка над сайтом без собственной ценности.
- Guideline 3.1.1 (In-App Purchase) — разблокировка цифровых функций или контента должна идти через встроенные покупки. Физические товары и услуги в реальном мире оплачиваются обычными способами.
- Guideline 4.8 (Login Services) — если вход только через сторонние соцсети, Apple может потребовать дополнительный вариант входа с защитой приватности, например Sign in with Apple.
- Guideline 5.1.1 — сбор данных: обоснованные запросы разрешений, понятные тексты в
Info.plist, удаление аккаунта.
Особенности Google Play
- Data safety — форма в Play Console должна совпадать с поведением приложения и SDK.
- Разрешения — доступ к SMS, журналу звонков, фоновой геолокации и всем файлам требует отдельного обоснования и подходит только для определённых сценариев.
- Target API level — Google регулярно повышает минимальный целевой уровень API для новых приложений и обновлений.
- Payments — для цифровых товаров действует Google Play Billing.
- Вводящее в заблуждение поведение — скрытые функции, фальшивые кнопки, несоответствие описанию.
Как отвечать и обжаловать
- Прочитайте пункт правил целиком, а не только письмо ревьюера.
- Если ревьюер ошибся, ответьте в Resolution Center (App Store Connect) или через апелляцию в Play Console: коротко, по фактам, со скриншотами или видео.
- Если нужен демо-доступ или пояснение, добавьте его в заметки и отправьте сборку заново.
- Для Apple при несогласии с решением есть App Review Board — формальная апелляция.
- Не спорьте эмоционально и не отправляйте одну и ту же сборку без изменений.
Чек-лист перед отправкой
- Релизная сборка протестирована на реальном устройстве.
- Демо-аккаунт работает и не истекает.
- Политика конфиденциальности открывается и актуальна.
- Декларации данных учитывают все SDK.
- Все запрашиваемые разрешения реально используются.
- Цифровые покупки идут через магазин.
- Удаление аккаунта доступно внутри приложения.