Driver — iOS
DriverViewController · CachedDriverSession
Equivalente Android: DriverFragment
Tela operacional do motorista durante uma viagem ativa. Mostra próxima parada, distância, instruções por voz e botões de evento (parada/incidente).
Arquivos
driver/ ├── DriverViewController.swift · UI principal └── CachedDriverSession.swift · sessão da viagem em cache local
Funcionalidades
- Carrega viagem ativa do usuário (filtrada por
user_id+ permissões 93/94). - Cacheia a sessão em
CachedDriverSessionpara sobreviver a reabertura/offline. - Instruções por voz com
AVSpeechSynthesizer. - Atualiza posição via Background Tasks + Socket.
Cache Offline da Sessão (CachedDriverSession + DriverCacheManager)
Atualizado junho/2026
Equivalente Android: DriverSessionCache
O DriverCacheManager persiste a sessão inteira da viagem num único blob (CachedDriverSession, Codable) em UserDefaults, com chave driverSession_{tripId}_{routeId} — por viagem + rota, para não misturar dados entre viagens que reusem a mesma rota. Cada save* regrava o blob inteiro, mantendo o disco sempre consistente. load() retorna false se não há cache.
| Campo do blob | Conteúdo | save* |
|---|---|---|
tripData | JSON da viagem (AnyCodable) | saveTripData |
mainCoordinates + mainInstructions | Geometria + turn-by-turn da rota principal | saveMainRoute |
alternativeRoutes | Rotas alternativas (coords + instruções) | saveAlternativeRoute |
stopPoints | Pontos de parada (MKPointAnnotation → title/subtitle/lat/lng) | saveStopPoints |
routeId, tripId, savedAt | Metadata da sessão | — |
Paridade Android: mesma estrutura do
DriverSessionCache (blob por tripId_routeId em SharedPreferences + Gson). O objetivo é comportamento offline idêntico nas duas plataformas: instruções, alternativas e pontos de parada sobrevivem sem rede.
Endpoints
GET
/v1/tripFiltra a viagem ativa do motorista logado.
GET
/v1/pointPontos da rota — usado para próxima parada.