API v1

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 CachedDriverSession para 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 blobConteúdosave*
tripDataJSON da viagem (AnyCodable)saveTripData
mainCoordinates + mainInstructionsGeometria + turn-by-turn da rota principalsaveMainRoute
alternativeRoutesRotas alternativas (coords + instruções)saveAlternativeRoute
stopPointsPontos de parada (MKPointAnnotation → title/subtitle/lat/lng)saveStopPoints
routeId, tripId, savedAtMetadata 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/trip
Filtra a viagem ativa do motorista logado.
GET/v1/point
Pontos da rota — usado para próxima parada.