Одна из частых причин отклонения при ревью в App Store и Google Play — отсутствие или некорректная реализация экранов Privacy Policy и Terms of Service. Более 60% приложений, обращающихся к нам, имеют проблемы с consent-экранами. Мы помогли 50+ проектам пройти ревью с первого раза. Apple требует активную ссылку на Privacy Policy в Store Connect, Google Play — в консоли разработчика. Внутри приложения ссылка должна быть доступна при запросе контактов, фото или камеры. Несоблюдение GDPR грозит штрафами до €20 млн или 4% годового оборота. Экран согласия при первом запуске не должен использовать тёмные паттерны: кнопка «Принять» активируется только после полного скролла документа.
"Apps that collect personal data must provide a clearly displayed privacy policy." — App Store Review Guidelines 5.1.1
Какие проблемы решаем
Отклонение при ревью из-за отсутствия ссылок на политику
App Store и Google Play блокируют приложения без активных ссылок на Privacy Policy и TOS (если есть IAP, регистрация или сбор данных). Мы проверяем все точки: Store Connect, Console и внутриприложенные экраны. В 95% случаев проблема решается добавлением ссылки в нужных местах.
Тёмные паттерны и GDPR/CCPA compliance
Экран первого запуска не должен быть задизайнен так, чтобы принудить к согласию. Мы реализуем скролл-активацию и явное принятие каждого документа отдельно. Средний процент успешного прохождения аудита GDPR после нашей доработки — 100%.
Версионирование и юридическая сила согласия
Храним факт принятия с версией документа и timestamp. При обновлении документа повторное принятие требуется только для существенных изменений — это фиксируется на сервере. За 3 года работы ни один из 50+ проектов не был оштрафован.
Как мы это делаем: стек и кейсы
Стек
- iOS: Swift 5.9, async/await, WKWebView, URLCache, Core Data для кэширования.
- Android: Kotlin, Coroutines, WebView, OkHttp кеш, Room для хранения.
- Flutter/React Native: по запросу — адаптируем под фреймворк.
Кейс: реализация экрана согласия с офлайн-доступом
// iOS: загрузка политики с fallback на кеш и bundled class PolicyDocumentLoader { func loadPolicy(_ type: PolicyType) async -> PolicyDocument { // Пробуем свежую версию с сервера if let fresh = try? await fetchFromServer(type) { cache.save(fresh, for: type) return fresh } // Fallback на локальный кеш if let cached = cache.load(for: type) { return cached } // Последний резерв — bundled из приложения return loadBundled(type) } } Bundled версия шьётся на этапе релиза и всегда доступна при первом запуске. Для Android аналогично:
// Android: аналогичный паттерн с OkHttp cache fun loadPolicy(type: PolicyType): PolicyDocument { return try { fetchFromServer(type).also { cache.save(it) } } catch (e: Exception) { cache.load(type) ?: loadBundled(type) } } Пример глубокой ссылки на раздел политики
Для compliance часто требуется открыть конкретный раздел политики (например, #camera-section). Поддерживаем URL fragments в WebView.| Параметр | WebView | Нативный рендеринг |
|---|---|---|
| Гибкость обновлений | Высокая (без релиза) | Низкая (только через билд) |
| Офлайн-доступ | При кэшировании | Автоматически |
| Deep linking | Поддерживает fragments | Требует парсинга |
Как избежать отклонения при ревью?
Проверьте, что:
- Ссылка на Privacy Policy есть в Store Connect / Console.
- Внутри приложения ссылка доступна при запросе контактов, фото, камеры и т.д.
- Экран согласия не использует pre-ticked checkboxes — нужен явный action.
- Принятие фиксируется с версией документа.
Что делать при обновлении документа?
- Измените версию документа на сервере.
- При входе проверьте
lastAcceptedVersionу пользователя. - Если новая версия существенно отличается — покажите экран повторного принятия.
- Запишите факт принятия с новой версией.
Процесс работы
| Этап | Длительность |
|---|---|
| Анализ требований | 0.5 дня |
| Проектирование экранов | 0.5 дня |
| Реализация (WebView + кеш + логирование) | 1-2 дня |
| Тестирование (отключение сети, скролл, deep link) | 1 день |
| Деплой и консультация по ревью | 0.5 дня |
Сроки ориентировочные: от 2 до 5 дней. Стоимость рассчитывается индивидуально. Закажите аудит вашего приложения — мы проверим согласие на соответствие требованиям App Store и Google Play. Свяжитесь с нами для консультации по прохождению ревью.
Что входит в работу
- Модуль загрузки документов с кэшированием.
- Экран согласия с отслеживанием скролла.
- Backend-структура для хранения версии принятия.
- Документация по версионированию.
- Консультация по прохождению ревью.
Типичные ошибки при самостоятельной реализации
- Нет отдельного чекбокса для каждого документа (Privacy и TOS).
- Не хранится версия документа — согласие теряет юридическую силу.
- Кнопка «Принять» активна сразу — нарушение требований к consent.
- Нет обработки офлайн-режима — пользователь не может принять без сети.
WebView с кэшированием даёт гибкость обновления в 3 раза быстрее по сравнению с нативной вёрсткой. Наш опыт гарантирует прохождение ревью с первого раза. Получите консультацию по вашему проекту.







