Реалізація GPS-трекінгу питомця через мобільний додаток
GPS-трекер на ошийнику кота присилає координату раз у 30 секунд. Хозяїн відкриває карту — точка стоїть на місці вже 10 хвилин, а кот явно втік. Проблема не у трекері — він працює. Проблема в тому, що додаток не розрізняє «стоїть на місці» та «втратив сигнал»: обидва стани виглядають однаково, якщо не показувати час останнього оновлення та рівень сигналу.
Отображение позиції питомця
Маркер на карті з фото питомця з профілю — це мінімум. Рядом потрібно показувати: час останнього оновлення («2 хв назад»), точність GPS (horizontalAccuracy з пакету трекера), рівень сигналу GSM, заряд батареї. Це чотири поля, які господар хоче бачити без кліку на маркер.
Колірний індикатор свіжості даних: зелений — оновлено < 2 хв, жовтий — 2–10 хв, червоний — >10 хв. Проста логіка, але усуває 90% запитань «а вдруг трекер завис».
Анімація маркера. Коли приходить нова координата — маркер плавно переміщується, не стрибає. На Android: ValueAnimator з LatLngInterpolator.Linear. На iOS: UIView.animate(withDuration: 0.5) на MKAnnotationView.coordinate. У Flutter через google_maps_flutter — оновлюємо Marker з новою LatLng, плавність через Tween<LatLng> в AnimationController.
Безпечна зона
Круговая геозона навколо дому — основна функція pet tracker. Користувач рисує на карті: тапає на центр (звичайно дім), тягне за ручку для задання радіусу. Рекомендуємий мінімум — 50–100 метрів, щоб погрішність GPS не вызивала ложні спрацювання.
Ложні спрацювання — реальна біль. GPS на рівні землі в окруженні дерев дає «стрибки» до 20–30 метрів. Фільтр Калмана на сервері або просте скользящее середнє по останніх 3 точках знижує ложні выходи з зони. Без цього фільтра ночні push-уведомлення «Барсик вийшов з дому» в 3:00 швидко выключают.
Live tracking
По умолчанию трекер працює в економному режимі: позиція раз у 5 хвилин. Господар включає live tracking — натискає кнопку в додатку, сервер відправляє команду трекеру на учащення оновлень (раз у 10–15 секунд). Трекер відповідає підтвердженням.
Команда йде через сервер: POST /trackers/{id}/mode {mode: "live"} → воркер → MQTT publish на топік пристрою → трекер відповідає. Мобільний клієнт чекає підтвердження через WebSocket (событие tracker_mode_changed). Таймаут очікування — 30 секунд, після чого UI показує «пристрій не відповідає».
На екрані live tracking — breadcrumb-трек за останні 15–30 хвилин через Polyline з зменшуючою непрозорістю по мірі устаревання точок.
Push при виході з зони
APNs alert push з sound: default та badge: 1. Вміст: «Барсик вийшов з безпечної зони — 120 м від дому». Посилання на карту через deep link у userInfo.
Важливо дати користувачу настроїти уведомлення: окремий toggle «Уведомляти тільки з 7:00 до 23:00» — кот може гуляти ночами, та господар це знає. UNNotificationTrigger з dateMatching або серверна фільтрація по розписанню користувача.
Графік
Реалізація GPS-трекінгу питомця (карта, live tracking, безпечна зона, push-алерти) при готовому API трекера: 4 години — 2 робочих дні. Вартість розраховується після уточнення деталей.







