Реализация Safe Zones для детского трекера в мобильном приложении
Safe Zones — геофенсинг: приложение должно уведомить родителя, когда ребёнок вышел из школы или пришёл домой. Звучит просто. На практике — задержка уведомления до 5-10 минут, срабатывание при стоянке автобуса у забора школы и ложные тревоги из-за GPS-дрейфа в 50-100 метров в городской застройке. Мы решаем эти проблемы, используя комбинацию нативного геофенсинга, серверной фильтрации и адаптивных порогов. Оценим ваш проект за 1 день — просто напишите нам.
Как работает геофенсинг на iOS и Android
iOS — CLLocationManager.startMonitoring(for: CLCircularRegion). Система отслеживает до 20 регионов одновременно на одно приложение. Точность определения входа/выхода — около 100-200 метров, задержка — до 3-5 минут. Регионы персистируются системой и продолжают мониториться даже после перезагрузки устройства, что важно для детского трекера. Apple Developer Documentation
Android — Geofencing API через GeofencingClient из Google Play Services. Лимит — 100 геофенсов на приложение. Уведомления приходят через PendingIntent в BroadcastReceiver или IntentService. На Android 12+ FINE_LOCATION обязателен для геофенсинга, BACKGROUND_LOCATION — для работы в фоне. Добавление геофенса: GeofencingRequest.Builder с setInitialTrigger(GEOFENCE_TRANSITION_ENTER) и нужным loiteringDelay чтобы отсечь мгновенные проходы мимо.
| Параметр | iOS | Android |
|---|---|---|
| Максимум зон | 20 | 100 |
| Точность в городе | 100-200 м | 50-150 м |
| Задержка уведомления | 3-5 мин | 1-5 мин |
| Фоновый мониторинг | Да (регионы персистентны) | Да (с Doze-ограничениями) |
Как уменьшить ложные тревоги?
В плотной городской застройке GPS-точность падает до 50-150 метров из-за многолучевого отражения сигнала. Если радиус Safe Zone — 100 метров (типичный двор), дрейф легко выводит точку за границу. Решение: не использовать одну точку, а брать медиану за последние 3-5 измерений перед принятием решения о переходе. На сервере — алгоритм сглаживания трека (Kalman filter или простое скользящее среднее с весами по horizontalAccuracy).
Второй слой защиты: loiteringDelay в Android Geofencing API — 60-120 секунд. Это означает, что DWELL-событие придёт только если устройство находится в зоне указанное время, а не промелькнуло мимо. Наш подход снижает ложные срабатывания на 60-80% по сравнению со стандартным геофенсингом.
Что входит в реализацию Safe Zones под ключ
| Этап | Результат |
|---|---|
| Аналитика | Определение сценариев, выбор радиуса и чувствительности |
| Проектирование | Архитектура клиент-сервер, схема геофенсов |
| Реализация | Интеграция с картами, настройка зон, обработка событий |
| Тестирование | Полевые тесты в разных локациях, отладка ложных тревог |
| Деплой | Публикация в App Store / Google Play, мониторинг |
В deliverables входит: документация по API, код с комментариями, настройка push-уведомлений, обучение команды (1-2 часа), поддержка в течение 30 дней после сдачи.
Процесс работы
- Аналитика — обсуждаем сценарии: школа, дом, кружки. Определяем радиусы и приоритеты.
- Проектирование — рисуем архитектуру: сервер хранит зоны, приложение ребёнка получает их через FCM/APNs, регистрирует геофенсы.
- Реализация — пишем код на Swift/Kotlin/Dart, настраиваем filter на сервере.
- Тестирование — выезжаем на локации (школа, парк) с реальными устройствами, правим threshold.
- Деплой — загружаем в сторах, настраиваем CI/CD, даём доступ к панели мониторинга.
Частые ошибки при внедрении геофенсинга
- Слишком маленький радиус (<50 м) → частые ложные срабатывания из-за GPS-дрейфа. - Отсутствие фильтрации на сервере → уведомления при каждом проходе мимо. - Игнорирование Doze mode на Android → уведомления не приходят ночью.Уведомления и надёжность
Push-уведомление должно прийти родителю максимально быстро. APNs/FCM с high-priority — задержка обычно 1-3 секунды. Но геофенс-событие от системы может появиться с задержкой: iOS гарантирует срабатывание «при следующем значительном движении или обновлении локации», Android в Doze mode — только при выходе из него.
Для критичных уведомлений (выход из зоны ночью) стоит рассматривать дублирование через SMS как fallback — особенно для детей с Android-бюджетниками без стабильного интернета.
Сроки и стоимость
Срок реализации модуля Safe Zones — 1-3 недели. Стоимость рассчитывается индивидуально в зависимости от количества платформ и интеграции с существующим трекером. За 5 лет работы мы реализовали более 30 проектов с геолокацией. Свяжитесь с нами для оценки вашего проекта — мы подготовим КП за 1 день.
Редактирование зон в приложении родителя
UI для Safe Zones: пользователь должен уметь нарисовать зону на карте или задать адрес + радиус. Google Maps SDK и MapKit оба поддерживают overlays для отрисовки круга. Минимальный разумный радиус — 50 метров (иначе слишком много ложных срабатываний), максимальный — 5 км.
Зоны синхронизируются с сервером и пушатся на устройство ребёнка через FCM/APNs data-push, после чего приложение ребёнка перерегистрирует геофенсы. При смене смартфона или переустановке приложения — автоматическая загрузка зон из backend.







