Мы разрабатываем приложения родительского контроля, которые решают три технически несовместимые задачи: перехват трафика, ограничение системных функций и мониторинг активности — на платформах, целенаправленно затрудняющих подобные решения. Apple и Google регулярно закрывают API, которыми жили предыдущие версии таких приложений. Проектировать систему надо с запасом на будущие изменения. Наш опыт — более 7 лет в мобильной разработке, 50+ успешных проектов для iOS и Android. Гарантируем качество и прохождение ревью в сторах.
iOS: как обойти ограничения App Store?
До появления Family Controls разработчики использовали VPN-профили для перехвата DNS и MDM-конфигурации для ограничений. Всё это по-прежнему работает, но в App Store такие приложения не пройдут ревью — Apple 4.2 (minimum functionality) или прямой отказ за использование частных API.
Единственный легальный и стабильный путь на iOS сегодня — Family Controls из ManagedSettings и FamilyActivityPicker (iOS 16+, Swift). Родитель авторизует ребёнка через AuthorizationCenter.shared.requestAuthorization(for: .individual), и приложение получает доступ к:
-
ManagedSettingsStore— блокировка конкретных приложений, ограничение веб-сайтов через WebContentFilter, отключение App Store, ограничение экранного времени. -
DeviceActivityMonitor— фоновые расширения, которые получают событияintervalDidStart/EndиeventDidReachThresholdбез постоянно работающего основного приложения. -
ShieldConfiguration— кастомный экран-заглушка при попытке открыть заблокированное приложение.
Ограничение Family Controls: работает только для «дочернего» Apple ID в семейном доступе. Если ребёнок под отдельным взрослым Apple ID — API недоступен. Это организационная проблема, не техническая, но о ней нужно предупреждать заказчика на старте.
Типичная граблина при разработке: DeviceActivityMonitor — это App Extension, он запускается в отдельном процессе с ограниченными ресурсами. Попытка обратиться к CoreData в основном контейнере из расширения приводит к крэшу с NSPersistentStoreCoordinator: Multiple NSEntityDescriptions. Решение — App Group с общим SQLite-файлом через NSPersistentContainer с явным appGroupContainerIdentifier.
Почему Android сложнее, но гибче?
Android даёт больше инструментов, но их сочетание требует точности. Рабочий стек:
-
UsageStatsManager— статистика использования приложений с точностью до пакета. ТребуетPACKAGE_USAGE_STATS— пользователь должен явно выдать разрешение в настройках (нельзя запросить черезrequestPermissions). Классический кейс: приложение запрашивает разрешение, пользователь нажимает «Назад», статистика не работает. Нужен onboarding с прямым Intent вSettings.ACTION_USAGE_ACCESS_SETTINGS. -
DevicePolicyManager+ Device Owner / Profile Owner. Device Owner даёт полный контроль: блокировка приложений, камеры, сетевых настроек. Установка Device Owner требует ADB-команды при первоначальной настройке (adb shell dpm set-device-owner), что непрактично для массового продукта. Profile Owner работает в рамках Work Profile — чуть менее мощный, но проще в развёртывании. -
AccessibilityService— исторически популярный способ мониторинга активного приложения (TYPE_WINDOW_STATE_CHANGED). Google последовательно ужесточает правила Play Store: приложения сAccessibilityServiceбез очевидной accessibility-причины выкидываются. Использовать только если нет альтернативы и есть убедительное обоснование для ревью. - VPN API (
VpnService) — локальный VPN для DNS-фильтрации. Трафик не покидает устройство, всё фильтруется на loopback через DNS-резолвер. Работает без root. Применяем в связке с заблокированными базами доменов (StevenBlack, Pi-hole lists). Проблема: некоторые приложения используют DoH (DNS-over-HTTPS) и обходят DNS-фильтр. Решение — deep packet inspection по SNI через TLS-прокси, но это уже сложнее и требует установки корневого сертификата.
| API | Назначение | Сложность | Легальность в сторах |
|---|---|---|---|
| UsageStatsManager | Статистика приложений | Низкая | Высокая |
| DevicePolicyManager | Блокировка устройств | Средняя | Средняя |
| AccessibilityService | Мониторинг активного окна | Средняя | Низкая |
| VpnService | DNS-фильтрация | Высокая | Высокая |
Мониторинг геолокации: как снизить расход батареи?
CLLocationManager на iOS и FusedLocationProviderClient на Android — стандарт для фоновой геолокации. Но у фоновой геолокации есть нюансы: iOS показывает пользователю уведомление «Приложение X использует вашу геолокацию» — ребёнок его видит. На Android с версии 10 нужно ACCESS_BACKGROUND_LOCATION + объяснение в Google Play Console.
Для экономии батареи используем геозоны (CLCircularRegion / GeofencingClient) вместо непрерывного трекинга. Событие входа/выхода из зоны генерирует push-уведомление родителю. Непрерывный трекинг — только по явному запросу. В среднем расход батареи снижается на 40–60% по сравнению с непрерывным мониторингом.
Синхронизация и родительский дашборд
Данные с детского устройства → зашифрованный канал → бэкенд → родительское приложение. Шифрование E2E не обязательно для этой задачи — TLS с mutual auth достаточно. Но хранить статистику активности приложений, историю браузера и геолокацию — это чувствительные данные, которые требуют соответствия GDPR и COPPA (если пользователи младше 13 лет).
COPPA в контексте мобильного приложения означает: согласие родителя перед сбором любых данных о ребёнке, минимизацию собираемых данных, возможность удаления по запросу. Apple и Google требуют явного указания в App Store Connect / Play Console о сборе данных несовершеннолетних.
Сравнение платформ: iOS vs Android для родительского контроля
| Характеристика | iOS (Family Controls) | Android (UsageStats + VPN + DPC) |
|---|---|---|
| Легальность в сторах | ✅ Полностью | ⚠️ Частично (Accessibility под угрозой) |
| Глубина блокировки | Средняя (только приложения) | Высокая (все системные функции) |
| Фоновая работа батареи | ~5–10% в сутки | ~10–15% (VPN) + геозоны |
| Сложность реализации | Низкая (готовые API) | Высокая (комбинация разных API) |
| Требования к устройству | Apple ID семейный | Android 10+ |
Android лучше iOS в 2–3 раза по глубине контроля, но требует больше усилий на онбординг и соблюдение правил Play Store.
Что входит в работу
- Аналитика: выбор API-стратегии с учётом будущих изменений
- Проектирование архитектуры клиент-ребёнок, клиент-родитель, бэкенд
- Реализация ограничительных механизмов (экранное время, фильтрация, блокировка)
- Мониторинг активности и геолокация с push-уведомлениями
- Дашборд для родителя (статистика, история, настройки)
- Интеграция с бэкендом (TLS, REST/GraphQL)
- Тестирование на устройствах последних версий ОС
- Прохождение ревью App Store и Google Play
- Документация, доступы, код, обучение команды заказчика
- Поддержка после релиза (настройка push, обновления при изменении API)
Этапы проекта
- Аналитика и выбор платформы
- Проектирование архитектуры
- Разработка ограничительных механизмов
- Мониторинг активности и геолокация
- Дашборд родителя и бэкенд
- Тестирование и баг-фикс
- Ревью в сторах и публикация
- Поддержка
Сроки и стоимость
MVP с базовыми ограничениями приложений и мониторингом для одной платформы — от 8 недель. Полноценный продукт с двумя платформами, геолокацией, DNS-фильтрацией и дашбордом — 4–6 месяцев. Стоимость рассчитывается индивидуально в зависимости от сложности и требований. Свяжитесь с нами для оценки вашего проекта — мы проанализируем задачу и предложим оптимальное решение. Закажите разработку приложения родительского контроля под ключ. Получите консультацию — мы расскажем, как реализовать мониторинг без риска блокировки в сторах.







