Розробка мобільного додатку для водія таксі

Водійський додаток таксі — технічно найскладніший із трьох клієнтів системи (водій, пасажир, диспетчер). Він має працювати у фоні годинами, приймати замовлення навіть при нестабільному інтернеті, точно відстежувати маршрут і не розряджати телефон за зміну. На Android 13+ система вбиває фонові сервіс

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Розробка мобільного додатку для водія таксі
Складний
від 1 тижня до 3 місяців

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    599

Водійський додаток таксі — технічно найскладніший із трьох клієнтів системи (водій, пасажир, диспетчер). Він має працювати у фоні годинами, приймати замовлення навіть при нестабільному інтернеті, точно відстежувати маршрут і не розряджати телефон за зміну. На Android 13+ система вбиває фонові сервіси через 3 хвилини, якщо не дотримано вимог. Таке траплялося з одним клієнтом: водії скаржилися, що не бачать нових замовлень. Довелося переробити location-модуль на ForegroundService та додати постійне сповіщення. Після цього втрати замовлень знизилися на 25%. Грамотна архітектура економить до 40% часу на доробках після запуску. Ми розробляємо такі додатки під ключ.

Як організувати фонову геолокацію в додатку водія таксі?

Водій не тримає телефон у руках постійно. Додаток має отримувати замовлення через push, трекати маршрут та оновлювати сервер кожні 3–5 секунд. На iOS використовуємо CLLocationManager з allowsBackgroundLocationUpdates. Відключаємо pausesLocationUpdatesAutomatically. У режимі очікування перемикаємося на significant-change для економії батареї. На Android — ForegroundService зі сповіщенням. Без нього MIUI 14, EMUI 12 та Samsung OneUI 6 вбивають процес через 5–10 хвилин. Використовуємо FusedLocationProviderClient з PRIORITY_HIGH_ACCURACY у поїздці та PRIORITY_BALANCED_POWER_ACCURACY в очікуванні. Перемикання за статусом замовлення. Згідно з документацією Android, ForegroundService — єдиний спосіб.

Платформа API Особливості Економія батареї
iOS CLLocationManager, allowsBackgroundLocationUpdates, background mode location Система автоматично призупиняє оновлення при бездіяльності; можна переключитися на significant-change Автоматично через pausesLocationUpdatesAutomatically
Android ForegroundService + FusedLocationProviderClient Потрібне постійне сповіщення; для тривалого фону — тільки ForegroundService Перемикання між high accuracy та balanced power за статусом замовлення

Як забезпечити надійний прийом замовлень при поганому інтернеті?

Нове замовлення приходить як FCM/APNs data push. Водій приймає або відхиляє — це має працювати навіть при поганому з'єднанні (тунелі, паркінги). Правильна схема: локальна черга прийнятих/відхилених рішень з retry-логікою на WorkManager (Android) або BackgroundTasks (iOS). Якщо відповідь не дійшла за 10 секунд — повторна спроба, інакше диспетчер вважає замовлення неприйнятим. Використання MQTT з QoS 1 гарантує доставку повідомлень швидше, ніж стандартний REST. Таймаут прийняття замовлення — класична грабля. Сервер дає водію 15–20 секунд. Якщо push прийшов із затримкою (FCM може затримувати до кількох хвилин у Doze mode) — водій бачить замовлення, натискає «прийняти», отримує помилку «замовлення вже розподілено». Рішення: timestamp створення замовлення в payload push, клієнт перевіряє вік замовлення перед відображенням діалогу. Локальна черга з WorkManager знижує втрати даних на 90%.

Чому важлива статусна машина замовлення?

Водійський додаток — строго скінченний автомат. Стани:

Статус Опис Дія
idle Очікування замовлення Прослуховування push
offer_received Отримано нове замовлення Діалог прийняття
accepted Замовлення прийнято Блокування інших замовлень
en_route_to_pickup Їде до пасажира Відображення маршруту
arrived_at_pickup На місці посадки Сповіщення пасажира
in_trip Поїздка Таксометр, трек
completed Поїздку завершено Розрахунок, історія

Кожен перехід — запит до сервера з підтвердженням. UI блокує кнопки до отримання відповіді, щоб виключити подвійні натискання. Помилка «arrived» натиснутої двічі — реальна проблема: водій натиснув кнопку, вона не відреагувала (лаг мережі), натиснув ще раз, обидві команди дійшли. Сервер має бути ідемпотентним по transition, клієнт — показувати spinner і блокувати повторні натискання до відповіді.

Як вибрати навігаційний SDK для таксі?

Інтеграція з картами — ключова частина. Для водійського додатку важливий turn-by-turn з голосовими підказками. Mapbox Navigation SDK для iOS та Android має готовий NavigationViewController / NavigationView з кастомізованим UI. Google Maps не надає готовий turn-by-turn UI — доведеться будувати самостійно на Directions API + TTS. Mapbox потребує менше часу на інтеграцію, ніж Google Maps з самостійною реалізацією. Також доступні 2GIS (хороше покриття СНД) та HERE Navigation SDK (трафік у реальному часі). Вибір залежить від регіонів роботи та бюджету. Перебудова маршруту при відхиленні — rerouting має спрацьовувати автоматично при відхиленні від треку більш ніж на 50–100 метрів. У Mapbox це вбудовано в SDK, у Google — потрібно реалізовувати самостійно.

Яка архітектура підходить для додатку таксі?

Чиста архітектура (Clean Architecture) з розділенням на шари: presentation (ViewModel / BLoC), domain (use cases), data (repositories). Для крос-платформи — Flutter з нативними модулями для location та push; для нативного підходу — Swift + UIKit/SwiftUI на iOS, Kotlin + Jetpack Compose на Android. Real-time обмін даними — WebSocket або MQTT для координат та статусів. MQTT кращий при нестабільному з'єднанні: QoS 1 гарантує доставку, малий overhead, підтримка reconnect з коробки. Налаштування ProGuard/R8 потребує правил для збереження моделей та Location API.

Що входить в роботу

  • Проектування FSM замовлення та архітектури
  • Реалізація location-модуля з фоновим режимом
  • Інтеграція навігації та push-сповіщень
  • Налаштування код-підпису та provisioning profile (iOS), ProGuard/R8 (Android)
  • Публікація в App Store та Google Play, включаючи TestFlight та Firebase App Distribution
  • Документація API та коду
  • Навчання водіїв роботі з додатком
  • Пост-релізна підтримка протягом місяця

Які етапи та терміни розробки?

  1. Аналіз сценаріїв роботи водія — 1–2 тижні
  2. Проектування FSM та архітектури — 1–2 тижні
  3. Розробка location-модуля — 2–3 тижні
  4. Інтеграція навігації та push — 2–3 тижні
  5. Інтеграція з backend — 2–3 тижні
  6. Тестування на реальних пристроях — 1–2 тижні
  7. Публікація — 1 тиждень

Загальний термін: від 8 до 16 тижнів. Вартість розраховується індивідуально, виходячи зі складності інтеграцій та вимог до платформ.

Наш досвід — понад 50 реалізованих проектів у сфері мобільної розробки. Отримайте консультацію з архітектури додатку та термінів розробки. Зв'яжіться з нами, щоб обговорити ваш проект.