Авторизация в 2026 для новичков: Email/пароль, OAuth, OTP и JWT без боли 🔐
Разбираем, как работает современный логин: зачем хешировать пароли, как устроены JWT и refresh-токены, что происходит при входе через Google/Apple, и как внедрять OTP/TOTP без дыр в безопасности. Плюс — частые ошибки новичков и чек-лист для собеседования.
Разработали первое мобильное приложение? Поздравляю! 🎉 Но расслабляться рано — впереди один из самых нервных этапов: модерация. По ощущениям (и по практике команд) примерно каждая вторая первая публикация ловит «отказ» или список правок. Давайте разберёмся, что чаще всего идёт не так — и как пройти ревью с первого раза.

Российская специфика: что нужно знать?
Прежде чем погружаться в технические детали, важно понимать текущие «реалии рынка» для российских разработчиков. Они влияют на аккаунты, оплату, API и монетизацию — а значит, и на шанс пройти модерацию спокойно.
Проблема с оплатой аккаунта разработчика
Apple и Google могут блокировать оплату российскими картами. Что обычно делают:
Используют аккаунты друзей/партнёров за границей
Работают через зарубежные компании-посредники
Используют международные виртуальные карты (например, Wise)
Для Android рассматривают альтернативы: RuStore, NashStore, AppGallery
Региональные ограничения
Некоторые сервисы и API могут быть недоступны или работать с нюансами:
Карты: Google Maps API — возможны ограничения; альтернативы: Yandex Maps, OpenStreetMap
Платежи: зарубежные варианты могут работать ограниченно; заранее продумайте модель монетизации
Push: Firebase обычно работает, но «внезапные нюансы» возможны — держите план B
Дальше — самое важное: почему отклоняют приложения. Разберём обе платформы по-человечески и с примерами.
🍎 Топ-5 причин отказа в App Store
1) Некорректные метаданные и описание
Что идёт не так:
Описание содержит контакты (email, телефон) или ссылки на соцсети
Скриншоты не соответствуют реальному функционалу
В описании упоминаются Android/Google Play/другие платформы
Ключевые слова содержат названия брендов/конкурентов
Как правильно:
❌ Плохо
Лучшее приложение! Пишите на email@example.com
Доступно также в Google Play!✅ Хорошо
Планируйте задачи, управляйте проектами и повышайте продуктивность.
Синхронизация между устройствами, напоминания и удобный интерфейс.Важно для российских разработчиков: если у вас есть веб-версия с российским доменом, не вставляйте ссылку в описание «на автомате». Apple может придраться к содержимому сайта.
2) Minimum Functionality (слишком «пустой» MVP)
Отклоняют, если:
Это слишком простая web-обёртка без ценности
Приложение дублирует встроенные функции iOS (фонарик/калькулятор) без доп. смысла
Приложение не работает без аккаунта, но вы не дали тестовый логин модераторам
Решение:
Дайте демо-аккаунт с заполненными данными
Опишите в примечаниях, что и где нажимать (да, это реально помогает)
Добавьте уникальную ценность (не просто web-view)
3) Конфиденциальность и приватность
Частые ошибки:
Сбор данных без согласия
Нет Privacy Policy
Запрос разрешений без понятного объяснения
Трекинг без корректного разрешения (ATT)
Пример: в iOS не пишите «нужна камера потому что нужна». Пишите конкретно и по делу.
// При запросе камеры в Info.plist обязательно:
<key>NSCameraUsageDescription</key>
<string>Приложению нужен доступ к камере для
сканирования QR-кодов ваших заказов</string>
// А НЕ просто:
<string>Нужен доступ к камере</string>Privacy Policy лучше иметь на английском (для международного) и русском (для аудитории)
Ссылка на Privacy Policy обязательна в App Store Connect
Если собираете email/телефон — прямо объясните зачем
4) Баги и крэши при тестировании
Модераторы реально тестируют приложение. Если оно падает на первом запуске или показывает белый экран — вылетаете из ревью быстрее, чем успеете моргнуть 😅
Типичные проблемы:
Краш при первом запуске
Белый экран/зависание
Неработающие кнопки
Проблемы с iPad-версией (если указали поддержку)
Как проверить себя:
Тестируйте на реальных устройствах (не только симулятор)
Проверьте основные сценарии: первый запуск, логин, ключевые экраны
Используйте TestFlight для бета-тестирования
5) Покупки и монетизация
Критические ошибки:
Оплата «в обход» IAP (In-App Purchase)
Упоминание более выгодных цен на сайте
Подписка без управления в приложении
Жёсткая реальность: если вы не можете принимать платежи через Apple IAP (например, нет зарубежной компании), подумайте о модели: бесплатное приложение, активация через веб (без упоминания цен), или публикация в альтернативных сторах.

🤖 Топ-5 причин отказа в Google Play
1) Несоответствие целевого API уровня
Google требует актуальный targetSdkVersion. Если вы сидите на старом — готовьтесь к отказу.
// В 2025 году минимум (пример):
android {
compileSdk 34
defaultConfig {
targetSdk 34 // Не ниже!
minSdk 24
}
}Почему отклоняют: старый targetSdk (например, 28/30). Решение: обновить проект и зависимости.
2) Нарушение Content Policy
Частые проблемы:
Иконки/название вводят в заблуждение (слишком похожи на известные бренды)
Контент 18+ без рейтинга
Спам-функциональность (автоматические действия без согласия)
Медицинские/финансовые советы без дисклеймера
Для российского рынка: если приложение связано с финансами — явно пишите, что это не финансовый советник. Осторожнее с темами криптовалют — модерация бывает строгой.
3) Проблемы с разрешениями (Permissions)
Что бесит модераторов: когда вы запрашиваете всё подряд, а используете 1 кнопку.
<!-- ❌ Плохо: просите всё подряд -->
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<!-- но реально используете только камеру -->Правило: каждое разрешение должно быть обосновано (в том числе в Data Safety / декларациях).
4) Нет обязательной информации о сборе данных (Data Safety)
Google требует заполнить Data Safety: что собираете, как используете, передаёте ли третьим лицам, можно ли удалить данные.
Лайфхак: даже если ничего не собираете — прямо укажите No data collected. Пропуск этого шага часто заканчивается отказом.
5) Битые или тестовые элементы
Залили Debug вместо Release
Оставили тестовые кнопки/фичи
Логи в консоли (уберите
console.log,Log.d())Слишком большой размер AAB
✅ Собрали Release-версию
✅ Включили ProGuard/R8
✅ Удалили console.log / Log.d
✅ Протестировали на разных экранах
✅ Проверили работу на Android 14⚠️ Общие ошибки для обеих платформ
Неправильные размеры иконок и скриншотов
App Store
Иконка 1024×1024px (без альфа-канала, без скруглений)
Скриншоты для iPhone и iPad отдельно
Разные размеры экранов (например, 6.7", 6.5", 5.5")
Google Play
Иконка 512×512px
Feature Graphic 1024×500px
Минимум 2 скриншота (максимум 8)
JPG/PNG до 8MB
Типичная ловушка: загружаете “айфон-скриншоты” с закруглениями в Google Play — Play добавляет свои скругления. Получается двойная рамка и «дешёвый вид».
Проблемы с возрастным рейтингом
Даже упоминание алкоголя может поднять рейтинг
Чат/форум = потенциально выше рейтинг
Страшный/шок-контент даже «в шутку» = выше рейтинг
Совет: лучше честно завысить, чем занизить и получить отказ с повторной подачей.
Нет возможности удалить аккаунт
Требование последних лет: если пользователь может создать аккаунт, он должен иметь возможность удалить его прямо в приложении (а не “пишите в поддержку”).
// Минимальный вариант
async function deleteAccount() {
if (confirm('Точно удалить аккаунт? Данные восстановить нельзя.')) {
await api.deleteUser(userId);
await logout();
showMessage('Аккаунт удалён');
}
}Альтернативные площадки (если совсем тяжело)
RuStore — растущая аудитория, своя модерация
NashStore — альтернатива для Android
AppGallery — магазин Huawei, большая аудитория в Азии
😵 Что делать, если всё-таки отклонили
Не паникуйте. Отказ — это нормально, особенно на первой публикации.
Внимательно прочитайте причину отказа (приходит на email/в консоль)
Исправьте конкретные пункты
В Resolution Center/ответе опишите, что именно исправили
Подайте заново
Если причина непонятна — попросите уточнить. Обычно модераторы отвечают. Для русскоязычных разработчиков: пишите простым английским, без сленга.
🏁 Заключение: главные правила
Золотое правило №1: читайте гайдлайны. Большинство отказов — из-за игнорирования документации.
Золотое правило №2: тестируйте на реальных устройствах. Эмулятор не покажет всех проблем.
Золотое правило №3: будьте честны. Рейтинг, разрешения, функционал — без «хитростей».
Золотое правило №4: не спешите. Неделя подготовки экономит месяц переподач.
Для российских разработчиков: держите запасной план. Ограничения могут меняться внезапно. Имейте контакты людей/компаний для публикации и продумайте альтернативные сторы.
🎓 Хотите глубже разобраться в мобильной разработке?
Публикация — это финальный штрих в длинном пути. В Кодике мы разбираем весь процесс от идеи до релиза:
Разработка на React Native, Flutter и нативных технологиях
Архитектура мобильных приложений
Работа с API и базами данных
Настройка CI/CD для автоматической публикации
Монетизация и аналитика
Практические задания и проекты — без воды
Нужна поддержка? Мы тут! 🤝
Застряли с ошибкой? Не проходит модерация? Не знаете, как правильно оформить Data Safety или метаданные?
Присоединяйтесь к нашему Telegram-сообществу: более 2000 активных разработчиков помогут разобраться.
👉 Найдите Кодик в Telegram и станьте частью активного сообщества разработчиков!