Types and Interfaces

Tipos e Interfaces

< Voltar

Esta seção descreve todos os tipos estruturados, seus campos, regras, validações, quando são usados, quem consome, e exemplos reais em TypeScript, Kotlin e Swift.

  • LocatorConfig e sub-estruturas (API, MQTT, Process, Battery, Motion, Collect, AudioRecord)

  • Telemetria (LocatorCollect, LocatorEvent) e pacotes (LocatorCollectPackage, LocatorEventPackage)

  • Identidade/controle (LocatorSession, LocatorToken, LocatorCert)

  • Catálogos (LocatorGroups, LocatorFeatures, LocatorGeofences)

  • Envelopes de request/response (LocatorRequestApi*, LocatorResponseApi*)


🧩 2.1 LocatorPackage<T>

Estrutura base de envio de dados ao backend via MQTT/WSS.

export interface LocatorPackage<T = Record<string, any>> {
  id: string;
  sequence?: number;
  license: string;
  sessionId?: string;
  connectivity: LocatorConnectivityType;
  network: LocatorNetworkType;
  osPlatform: string;
  sdkVersion: string;
  data: T[];
  timestamp: number;
}

🟩 Kotlin (Android)

🟧 Swift (iOS)

📌 Descrição dos campos

Campo
Tipo
Obrigatório
Descrição

id

string

ID único do pacote (UUID). Usado para rastreabilidade e idempotência no backend.

sequence

number

opcional

Contador incremental para depuração e ordenação lógica.

license

string

Identificador único do device/usuário.

sessionId

string

opcional

ID da sessão atual do SDK. Muda a cada start().

connectivity

LocatorConnectivityType

Tipo de conectividade no momento da criação do pacote.

network

LocatorNetworkType

Detalhamento específico da rede.

osPlatform

string

Ex.: "android", "ios", "web".

sdkVersion

string

Versão instalada do SDK.

data

T[]

Lista de objetos (LocatorCollect, LocatorEvent etc.).

timestamp

number

Epoch ms da geração do pacote.

📌 Quando o SDK usa este modelo?

  • Para envio de eventossendEvents()

  • Para envio de localizaçõessendLocations()

  • Para telemetria interna


🧩 2.2 LocatorRetryPolicy

Define como o SDK deve executar retry de transmissões ou comandos.

🟩 Kotlin (Android)

🟧 Swift (iOS)

Regras

  • O SDK usa backoff exponencial quando backoffFactor é informado. Exemplo: delay = baseDelayMs × backoffFactor^(attempt-1)

  • O SDK é livre para aplicar políticas próprias quando todos os campos forem omitidos.


🧩 2.3 LocatorApiConfig

Configurações das rotas HTTP (API) usadas pelo SDK.

🟩 Kotlin (Android)

🟧 Swift (iOS)

Campos

Campo
Descrição

token

Token JWT temporário recebido na ativação do SDK.

certUrl

Endpoint que retorna certificado mTLS (P12 + nonce).

scopesUrl

Endpoint de sincronização de scopes.

tokenUrl

Endpoint para solicitar novos tokens (API/MQTT/WSS).

configUrl

Endpoint das configurações gerais do SDK.

groupsUrl

Endpoint de grupos administrados/visíveis.

featuresUrl

Endpoint que retorna as features habilitadas.

geofencesUrl

Endpoint para sincronizar geofences.


🧩 2.4 LocatorMqttConfig

Configurações para conexão MQTT (telemetria/streaming).

🟩 Kotlin (Android)

🟧 Swift (iOS)

Observações importantes

  • clientId deve ser único por conexão. SDK usa clientId separado para WSS e para MQTT nativo.

  • username normalmente é fixo, porque o token JWT fornece a autenticação real.


🧩 2.5 Bateria – LocatorBatteryEvent & LocatorBatteryConfig

🟩 Kotlin (Android)

🟧 Swift (iOS)

Regras de funcionamento

  • O evento é disparado quando a bateria entra na faixa [min, max].

  • interval impede repetição excessiva (ex.: só novo evento após X minutos).

  • Se charging = true, só dispara quando plugado; se false, só quando não está plugado.

  • powerMode permite definir regras diferentes por modo de economia.


🧩 2.6 Movimento – LocatorMotionConfig

🟩 Kotlin (Android)

🟧 Swift (iOS)

  • sensitivity controla quão fácil o SDK identifica aceleração/frenagem/curvas.

  • Valor recomendado: entre 1 e 10.


🧩 2.7 Processo – LocatorProcessConfig

🟩 Kotlin (Android)

🟧 Swift (iOS)

Notas importantes

  • offlineRetentionDays: controla por quanto tempo localizações podem ficar armazenadas offline.

  • Em Android, o foreground notification é obrigatório para coleta contínua.


🧩 2.8 Coleta – LocatorCollectConfig

🟩 Kotlin (Android)

🟧 Swift (iOS)

Comportamento

  • collectIntervalMillis: frequência de coleta.

  • sendIntervalMillis: frequência de envio do batch.

  • minDisplacementMeters: só coleta novamente se o deslocamento mínimo for atingido.

  • maxTravelDistanceMeters: protege contra distâncias absurdas erradas.

  • highAccuracy: força GPS quando habilitado.

  • maxBatchSize: tamanho máximo de buffer antes de enviar.


🧩 2.9 LocatorConfig

A configuração principal do SDK.

🟩 Kotlin (Android)

🟧 Swift (iOS)

Observações

  • Configuração é versionada (revision, createdAt, updatedAt).

  • O SDK compara revisões para saber se precisa sincronizar.


🧩 2.10 LocatorSession

🟩 Kotlin (Android)

🟧 Swift (iOS)

  • id muda toda vez que o app chama start().

  • A sessão abrange:

    • coletas

    • eventos

    • comandos

    • pacotes enviados


🧩 2.11 Certificados – LocatorCert

🟩 Kotlin (Android)

🟧 Swift (iOS)

Regras

  • O P12 vem criptografado; a senha é derivada usando:

    • o nonce recebido +

    • o nonce enviado ao solicitar o certificado (dupla derivação, aumenta segurança)


🧩 2.12 Tokens – LocatorToken

🟩 Kotlin (Android)

🟧 Swift (iOS)

  • Tokens são temporários.

  • SDK usa caching inteligente.


🧩 2.13 Geofences – LocatorGeofence, LocatorGeofences

🟩 Kotlin (Android)

🟧 Swift (iOS)

Regras importantes

  • Geofence só é ativa se o groupId estiver presente em LocatorGroups.

  • Se chegar uma geofence de um grupo desconhecido → SDK dispara sync automático de grupos.


🧩 2.14 Grupos – LocatorGroups

🟩 Kotlin (Android)

🟧 Swift (iOS)

Semântica:

  • admin: grupos em que o usuário tem permissões elevadas (ex.: monitorar outros).

  • all: grupos visíveis geral.


🧩 2.15 Features – LocatorFeature, LocatorFeatures

🟩 Kotlin (Android)

🟧 Swift (iOS)

Regras

  • Features são controladas pelo backend.

  • scopes são obrigatórios em features com restrição RBAC.


🧩 2.16 Coletas – LocatorCollect

🟩 Kotlin (Android)

🟧 Swift (iOS)

Notas críticas

  • É o modelo mais importante do SDK.

  • Cada localização pode ter opcionalmente metadados GNSS.

  • sdkMode e powerMode permitem auditoria completa.


🧩 2.17 Eventos – LocatorEvent

🟩 Kotlin (Android)

🟧 Swift (iOS)

Exemplo de payload útil


🧩 2.18 Pacotes específicos

🟩 Kotlin (Android)

🟧 Swift (iOS)

  • São o formato final enviado ao backend via MQTT.


🧩 2.19 Comandos – LocatorCommand

🟩 Kotlin (Android)

🟧 Swift (iOS)

Observações

  • Comandos podem ser recebidos via:

    • MQTT

    • FCM push

    • App

    • WebView Bridge

  • SDK sempre retorna um LocatorCommandResult.


🧩 2.20 Resultado – LocatorCommandResult

🟩 Kotlin (Android)

🟧 Swift (iOS)

Campos importantes

  • attempts: mostra quantas tentativas foram feitas.

  • startAt e endAt: audit log completo.

  • details: dados específicos do comando executado.


🧩 2.21 Estruturas de Request/Response de API

Modelo base de request

🟩 Kotlin (Android)

🟧 Swift (iOS)

Modelo base de response

🟩 Kotlin (Android)

🟧 Swift (iOS)

Tipos especializados

São apenas wrappers tipados:

🟩 Kotlin (Android)

🟧 Swift (iOS)

🧩 2.22 Áudio – LocatorAudioRecord

🟩 Kotlin (Android)

🟧 Swift (iOS)

Notas importantes

  • recordsCount: descreve quantas gravações serão realizadas.

  • durationSeconds: descreve o tempo de gravação.

  • retryCount: descreve a quantidade de tentativas de envio.

  • intervalSeconds: descreve o intervalo entre gravações.

  • No Android, o foreground notification é obrigatório para coleta contínua, desta forma é necessário o preenchimento do campo audioServiceNotification com os dados de title e message.


< Voltar

Last updated