Кілька років тому до нас прийшов клієнт зі скаргою: GPS-трекер на нашийнику кота надсилає координату раз на 30 секунд, але в додатку власник бачить одну й ту саму точку, хоча кіт уже втік. Ми з'ясували: проблема не в трекері, а у відсутності індикації часу останнього оновлення та рівня сигналу. Тому при розробці pet-трекера ми приділяємо першочергову увагу візуалізації стану даних.
Як працює GPS-трекінг улюбленця?
Архітектура системи включає три компоненти: сам трекер (апаратний пристрій з GPS-модулем та GSM-зв'язком), серверну частину та мобільний додаток. Трекер надсилає дані через MQTT протокол (QoS 1) на сервер, сервер зберігає їх у PostgreSQL з PostGIS та публікує в WebSocket канал для клієнта. Мобільний додаток підписується на оновлення та відображає позицію на карті. Використовуємо MapKit на iOS, Google Maps на Android, google_maps_flutter на Flutter. Для обробки даних застосовуємо Combine framework та async/await на iOS, Coroutines flow на Android.
Відображення позиції улюбленця
Маркер на карті з фото улюбленця з профілю — це мінімум. Поруч потрібно показувати: час останнього оновлення («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 не викликала хибні спрацьовування.
Як працює фільтр Калмана?
Фільтр Калмана на сервері або просте ковзне середнє за останніми 3 точками знижує хибні виходи за зону. Без цього фільтра нічні push-сповіщення «Барсик вийшов з дому» о 3:00 швидко вимикають.Чому важлива фільтрація GPS даних?
Необроблені дані GPS містять шум, особливо в міській забудові або лісопарковій зоні. Маршрут улюбленця може «стрибати» на десятки метрів, що призводить до хибних спрацьовувань геозони та сповіщень. Ми використовуємо фільтр Калмана або ковзне середнє, щоб згладити траєкторію. Результат — точний трек без викидів, довіра до системи та happy user. Наш алгоритм фільтрації зменшує похибку GPS у 3 рази порівняно з необробленими даними.
Живий трекінг (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 зі зменшенням непрозорості в міру старіння точок. Економний режим витрачає заряду батареї в 30 разів менше, ніж live-режим.
| Режим | Інтервал оновлення | Споживання батареї | Сценарій використання |
|---|---|---|---|
| Економ | 5 хвилин | Низьке | Звичайний день, прогулянка у дворі |
| Live | 10–15 секунд | Високе | Пошук улюбленця, активне спостереження |
Push-сповіщення при виході із зони
Реалізуємо APNs alert push з sound: default і badge: 1. Вміст: «Барсик вийшов із безпечної зони — 120 м від дому». Посилання на карту через deep link у userInfo. Важно дати користувачеві налаштування сповіщень улюбленця: окремий toggle «Сповіщати тільки з 7:00 до 23:00» — кіт може гуляти вночі, і власник це знає. Використовуємо UNNotificationTrigger з dateMatching на iOS або серверну фільтрацію за розкладом.
Що входить в роботу
При замовленні розробки GPS-трекінгу улюбленця ми надаємо:
- Вихідний код мобільного додатка (iOS/Android/Flutter) з реалізацією карти, геозон, push-сповіщень та live tracking.
- Серверну частину (REST API, MQTT брокер, WebSocket) — Docker-збірка та інструкція з розгортання.
- Документацію з API та інтеграції з конкретною моделлю трекера.
- Навчання команди замовника: як додавати нові трекери та змінювати конфігурацію.
- Гарантію стабільної роботи: 3 місяці безкоштовної підтримки після запуску.
Наш досвід — 5+ років розробки мобільних додатків для трекінгу, понад 20 успішних проєктів у цій ніші. Розробка під ключ: ми візьмемо на себе всю роботу від проектування до публікації в App Store та Google Play. Пишіть нам – оцінимо ваш проект безкоштовно. Ми гарантуємо точність геоданих та захист персональних даних (відповідність App Store Review Guidelines Section 5.1).
Зв'яжіться з нами для оцінки вашого проєкту — ми допоможемо підібрати оптимальну архітектуру та терміни. Вартість базової реалізації (карта, геозона, live tracking, push) стартує від $2,500. Замовте розробку GPS-трекера для улюбленця та отримайте рішення, яке працює з коробки.
Терміни: базова реалізація при готовому API трекера — від 4 годин до 2 робочих днів. Вартість розраховується індивідуально після уточнення деталей.







