Разработка мобильного приложения для курьерской службы

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка мобильного приложения для курьерской службы
Средний
от 1 недели до 3 месяцев
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка мобильного приложения для курьерской службы

Курьер принял заказ, выехал — и приложение упало в background-killed на Android Xiaomi с MIUI. FusedLocationProvider перестал отдавать координаты, трек оборвался, диспетчер не видит машину. Это не гипотетический сценарий — это стандартная проблема курьерских приложений на агрессивных лаунчерах MIUI, OneUI, EMUI, где foreground service убивается сборщиком мусора батареи.

Проблема: геотрекинг на Android

На Android для непрерывной геолокации нужен Foreground Service с явным уведомлением в строке статуса. Без него на Xiaomi/Huawei/OPPO приложение умрёт через 5–10 минут в фоне независимо от WakeLock. Но и foreground service не панацея: MIUI добавляет батарейные ограничения даже на запущенные сервисы, если пользователь не разрешил автозапуск вручную.

Правильный подход: при первом запуске показываем Intent на системный экран «Автозапуск» (для MIUI — com.miui.securitycenter, для Huawei — com.huawei.systemmanager). Это не всегда красиво, но это единственный способ гарантировать трекинг. Плюс — батч-отправка координат: накапливаем точки в памяти, отправляем каждые 10–15 секунд одним запросом вместо 15 отдельных.

На iOS проблем меньше: CLLocationManager с allowsBackgroundLocationUpdates = true и pausesLocationUpdatesAutomatically = false работает надёжно. Но significant-change location updates не подходят для курьеров — они срабатывают только при смене соты (~500 м точность), что не годится для отображения на карте в реальном времени.

Архитектура двух приложений

Курьерский сервис — это почти всегда два отдельных приложения: для курьера и для клиента. Иногда добавляется третье — диспетчерский web-интерфейс. Но мобильная часть может быть в одном проекте с разными flavor/scheme:

  • Android Flavors: courierApp / clientApp — разные applicationId, иконки, разрешения
  • iOS Targets: два target'а в одном Xcode-проекте, shared код через SPM-пакет

Это позволяет переиспользовать бизнес-логику (сетевой слой, модели данных, геолокационный модуль) между двумя приложениями без дублирования кода.

Алгоритм назначения и маршрутизация

Логика распределения заказов живёт на сервере. Мобильный клиент только получает назначение через push (FCM/APNs с priority: high) и подтверждает принятие. Важно: FCM high priority на Android гарантирует доставку даже в Doze mode, но только если у приложения есть RECEIVE_BOOT_COMPLETED и правильно настроен FirebaseMessagingService.

Маршрут до получателя строим через Google Maps Directions API или OSRM (если нужен self-hosted без платы за API-вызовы). Пошаговую навигацию не реализуем в приложении — открываем Google Maps / Яндекс.Навигатор через deep link, передавая координаты точки доставки.

ETA и трекинг для клиента

Клиент видит курьера на карте — это WebSocket или Server-Sent Events от сервера до клиентского приложения. Координаты обновляются каждые 5–10 секунд. На карте используем Marker с анимацией animateCamera чтобы точка не прыгала, а плавно двигалась — ValueAnimator (Android) или CABasicAnimation (iOS).

ETA считается на стороне сервера через Google Maps Distance Matrix API или HERE Routing API и передаётся клиенту. Не вычисляем ETA на устройстве — там нет актуальных данных о пробках.

Подтверждение доставки

Три варианта подтверждения, которые встречаются чаще всего:

  • Фото посылки/двери — CameraX (Android) или AVFoundation (iOS) + загрузка в S3/GCS
  • PIN-код, который знает получатель — простой TOTP или статический код из заказа
  • Подпись на экране — Canvas/UIBezierPath, сохраняем как SVG или PNG

Код подписи делаем с strokeWidth зависящим от скорости движения пальца — выглядит значительно естественнее, чем линия постоянной толщины.

Этапы и сроки

Минимальный жизнеспособный продукт — два приложения (курьер + клиент) с геотрекингом, назначением заказов и подтверждением доставки: 6–10 недель при команде 2 разработчика + дизайнер. Полная платформа с диспетчерским модулем, аналитикой и интеграцией с внешними OMS/WMS-системами — 4–6 месяцев. Стоимость рассчитывается индивидуально после анализа требований.