Мы разрабатываем мобильные приложения для курьеров доставки еды. Эта роль специфична: короткие маршруты (1–5 км), до 30 заказов за смену, частые поездки на велосипеде или самокате, жёсткие временные рамки — еда должна оставаться горячей. Приложение обязано работать без лагов, с минимальным числом тапов на ключевых действиях и точно показывать путь от ресторана до клиента. За 7 лет мы выпустили 15+ приложений для доставки и знаем каждую техническую деталь.
Почему критична синхронизация таймера принятия заказа?
Новый заказ приходит как push-уведомление с таймером. У курьера есть 30–45 секунд, чтобы принять или отклонить. Если не ответил — заказ уходит следующему. На экране отображаются адрес ресторана, адрес клиента, расстояние, расчётное время и стоимость заказа.
Таймер реализован как круговой прогресс-бар с обратным отсчётом. На iOS используем CAShapeLayer с анимацией strokeEnd, на Android — кастомный View с Canvas.drawArc. Таймер клиентский, синхронизирован с сервером по timestamp создания офера, а не по моменту получения push — push может задержаться на 8–10 секунд из-за FCM. Мы видели ошибку: таймер считал от получения push, курьер видел 22 секунды вместо 30, нажимал «принять» в последний момент, но сервер уже отдал заказ другому. Решение: в payload push включаем offer_created_at, клиент вычисляет разницу с Date.now().
Как мы настраиваем навигацию для разных типов курьеров?
Маршрут состоит из двух этапов: сначала к ресторану (забрать), потом к клиенту (доставить). На каждом этапе — turn-by-turn навигация. Для велокурьера и пешего — пешеходный маршрут, для автомобиля — автомобильный. Режим определяется автоматически по скорости движения (GPS speedometer: >15 км/ч — авто, иначе пеший/вело) или выбирается вручную при регистрации.
Mapbox Navigation SDK поддерживает профили cycling и walking из коробки. Google Maps Navigation SDK также поддерживает, но при больших объёмах заказов выходит дороже. Mapbox SDK в 2,5 раза дешевле Google Maps SDK при 100 000 запросов в месяц.
| Параметр | Mapbox SDK | Google Maps SDK |
|---|---|---|
| Профили маршрутов | Пеший, вело, авто | Пеший, вело, авто |
| Стоимость при 100k запросов/мес | ~$150 | ~$400 |
| Офлайн-карты | Да, с кешированием | Только с Premium |
| Простота интеграции | Быстрая настройка | Сложная конфигурация |
Одновременно несколько заказов
Продвинутая функция (Яндекс.Лавка, Delivery Club «пачка»): курьер берёт 2–3 заказа из одного ресторана, развозит по разным адресам. Маршрут строится как последовательность точек с оптимальным порядком через waypoints в Directions API. На клиенте — список точек с кнопкой «выполнено» для каждой.
Что входит в разработку приложения для курьера?
Мы предоставляем полный комплект deliverables:
- Техническая документация и архитектура
- Дизайн экранов (Figma) с учётом UX для быстрых действий
- Исходный код под iOS/Android/кроссплатформу
- Настройка push-уведомлений (APNs/FCM) и геофенсов
- Интеграция платёжного шлюза (Stripe, PayPal)
- Развёртывание в App Store и Google Play с прохождением ревью
- Обучение команды заказчика (2–3 часа)
- Поддержка в течение 1 месяца после запуска
Процесс работы: от аналитики до публикации
| Этап | Длительность | Результат |
|---|---|---|
| Аналитика и прототип | 1–2 недели | User stories, wireframes, API-спецификация |
| Дизайн | 1–2 недели | Pixel-perfect макеты всех экранов |
| Разработка backend и клиента | 4–6 недель | Работающий MVP в staging |
| Тестирование и баг-фиксинг | 1–2 недели | QA-отчёт, исправленные баги |
| Деплой в сторы | 1 неделя | Приложение в App Store и Google Play |
Срок: от 6 до 10 недель до первого релиза. Стоимость рассчитывается индивидуально.
Как обеспечить офлайн-доступ к данным?
Велокурьер в подвальном ресторане — без сети. Критические данные (адрес клиента, номер телефона, код домофона) кешируются при получении заказа. Для отправки статусов используем exponential backoff: если запрос «доставил» не прошёл, повторяем с увеличивающейся задержкой, пока не получим подтверждение сервера. Курьер не должен вручную тыкать «отправить ещё раз».
Пример конфигурации офлайн-очереди на iOS
let operationQueue = OperationQueue() operationQueue.maxConcurrentOperationCount = 1 // Используем Reachability для мониторинга сети Подтверждение получения заказа в ресторане
Курьер забирает заказ и подтверждает это сканированием QR-кода на чеке (надёжно) или нажатием кнопки «забрал» (проще, но без верификации). QR-сканирование через MLKit или Vision занимает 0,5–1 секунду. Для автоматического появления кнопки «забрал» используем GPS-геофенс с радиусом 50–100 метров — кнопка активна только когда курьер действительно у ресторана. Это исключает ошибочные нажатия из другого места.
Чаевые и рейтинг
После доставки — экран с предложением оставить чаевые (опционально). Используем Stripe Payment Intents для постоплаты. Клиент оценивает курьера — рейтинг агрегируется в профиле. По окончании смены курьер видит суммарный заработок, количество доставок, средний рейтинг. Графики строим с помощью SwiftCharts (iOS 16+) или MPAndroidChart — простой bar chart по часам смены. В среднем курьер получает 150 руб чаевых за заказ, что при 20 заказах в день даёт дополнительно 3000 руб.
Как увеличить заработок курьера через приложение?
- Оптимизируйте маршруты — меньше холостого пробега.
- Добавьте систему рейтинга — высокий рейтинг повышает доверие и чаевые.
- Внедрите офлайн-режим — курьер не теряет заказы при потере сети.
Получите консультацию по вашему проекту — оценим сроки и стоимость бесплатно. Закажите разработку под ключ с гарантией качества и соблюдением сроков. Мы гарантируем прохождение ревью в сторах с первого раза — наш опыт это подтверждает.







