Реалізація зон безпеки (Safe Zones) для дитячого трекера у мобільному додатку
Safe Zones — геофенсинг: додаток повинен повідомити батька, коли дитина вийшла зі школи або прийшла додому. Звучить просто. На практиці — затримка уведомлення до 5-10 хвилин, спрацювання при стоянці автобуса у забору школи та ложні тривоги з-за GPS-дрейфу в 50-100 метрів в міській забудові.
Як працює геофенсинг на iOS та Android
iOS — CLLocationManager.startMonitoring(for: CLCircularRegion). Система відстежує до 20 регіонів одночасно на один додаток. Точність визначення входу/виходу — близько 100-200 метрів, затримка — до 3-5 хвилин. Регіони персистуються системою та продовжують моніторитися навіть після перезагрузки пристрою, що важливо для дитячого трекера.
Android — Geofencing API через GeofencingClient з Google Play Services. Ліміт — 100 геофенсів на додаток. Уведомлення приходять через PendingIntent у BroadcastReceiver або IntentService. На Android 12+ FINE_LOCATION обов'язковий для геофенсинга, BACKGROUND_LOCATION — для роботи в фоні. Додавання геофенса: GeofencingRequest.Builder з setInitialTrigger(GEOFENCE_TRANSITION_ENTER) та потрібним loiteringDelay щоб відсікти миттєві прохдаи мимо.
GPS-дрейф у місті — головна причина ложних тривог
У щільній міській забудові GPS-точність падає до 50-150 метрів з-за багатолучевого відображення сигналу. Якщо радіус Safe Zone — 100 метрів (типовий двір), дрейф легко выводит точку за границю. Рішення: не використовувати одну точку, брати медіану за останні 3-5 вимірювань перед прийняттям рішення про перехід. На сервері — алгоритм сглаживання треку (Kalman filter або просте скользящее середнє з ватами по horizontalAccuracy).
Другий шар захисту: loiteringDelay у Android Geofencing API — 60-120 секунд. Це означає, що DWELL-событие прийде тільки якщо пристрій знаходиться в зоні указаний час, а не промелькнув мимо.
Уведомлення
Push-уведомлення повинне прийти батькові максимально швидко. APNs/FCM з high-priority — затримка звичайно 1-3 секунди. Але геофенс-событие від системи може появиться з затримкою: iOS гарантує спрацювання «при наступному значному русі або оновленні локації», Android у Doze mode — тільки при виході з нього.
Для критичних уведомлень (дитина вийшла з зони ночи) варто розглядати дублювання через SMS як fallback — особливо для дітей з Android-бюджетниками без стабільного інтернету.
Редагування зон в додатку батька
UI для Safe Zones: користувач повинен уміти намалювати зону на карті або задати адресу + радіус. Google Maps SDK та MapKit обидва підтримують overlays для відрисування кола. Мінімальний розумний радіус — 50 метрів (інакше забагато ложних спрацювань), максимальний — 5 км.
Зони синхронізуються з сервером та пушатся на пристрій дитини через FCM/APNs data-push, після чого додаток дитини перерегіструє геофенси. При смені смартфона або переустановці додатку — автоматична загрузка зон з backend.
Графік реалізації модулю Safe Zones: 1-3 тижні. Вартість залежить від кількості платформ та інтеграції з існуючим трекером.







