Courier Driver Mobile App Development
A courier app for the performer is a work tool opened all day. A foot courier holds the phone in hand, a bike courier — in pocket, a car courier — on a stand. The app must work in all three modes with different UI, navigation, and battery consumption requirements.
Task List and Prioritization
The courier sees a queue of tasks sorted by route, not by order creation time. Map display + list — mandatory combination. Tapping a task in the list centers the map on the point; tapping a marker opens task details.
Task pool can change in real-time: dispatcher adds an urgent order along the route. Update via WebSocket: new task appears in the list with insertion animation (DiffUtil on Android / withAnimation in SwiftUI), sound signal + vibration.
Navigation for Foot Courier
For a foot courier, step-by-step car navigation is useless — it follows roads. Google Maps SDK supports pedestrian mode (travelMode: walking), Mapbox Navigation SDK too. The route goes through courtyards and pedestrian crossings, not around the block.
Important: on courier screen, list or chat is often open, not the map. Voice prompts via TTS (AVSpeechSynthesizer / TextToSpeech) work over any screen and let the courier not look at the phone.
Delivery Confirmation
Three completion scenarios:
- Recipient at home — courier clicks "delivered", photo not required
- Left at door — photo required, coordinates fixed
- Not found — reason from list, choice of next action (return, reschedule, leave with neighbor)
Photo "left at door" — taken directly from app (CameraX / AVCaptureSession), geotag and time from system (not EXIF, which can be faked — from server on upload). Upload with retry: on poor LTE in building entrance, photo will go when internet available.
Electronic signature of recipient — optional. Implemented via UIBezierPath (iOS) or Path on Canvas (Android), saved as SVG or PNG.
Battery and Performance
Courier shift — 8-10 hours. A ForegroundService with GPS and open map can fully drain battery. Optimization:
- In standby mode (courier at point) — reduce GPS frequency to 1 update per 60 seconds
- Map in app —
Lite Mode(Google Maps) for list, full map only for navigation - Screen brightness — recommend auto, don't forcefully set maximum
On Android additionally: don't disable system Sleep for screen in standby mode (only in navigation mode keep SCREEN_BRIGHT_WAKE_LOCK).
Communication with Customer
Phone call from app — tel: URI scheme, straightforward. But better — masked number via VoIP gateway (Twilio, Voximplant): courier doesn't see customer's real number and vice versa. Additionally: chat with preset templates ("I'll be in 5 minutes", "Can't find the doorbell", "Where to leave it?").
Timeline: 6 to 12 weeks for courier client. Cost calculated individually.







