> For the complete documentation index, see [llms.txt](https://docs.facephi.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.facephi.com/docs.facephi-pt-br/sdks/sdk-mobile/android-sdk/componentes-modulos/conexion-con-plataforma.md).

# Conexão com a plataforma

## Introdução <a href="#id-1-introduccion" id="id-1-introduccion"></a>

O envio de eventos para a plataforma é realizado com o ***Tracking Component***.

Este é responsável por realizar o rastreamento e o monitoramento das informações obtidas durante a execução das operações. Será possível acompanhar esses dados em tempo real na **Plataforma**, enquanto o processo está sendo executado no dispositivo do cliente.

Ao contrário do que acontece com o restante, este componente não funciona individualmente, ele atua de forma transversal aos demais componentes instalados na *SDKMobile*.

Na seção de [Lançamento simplificado](/docs.facephi-pt-br/sdks/sdk-mobile/android-sdk/inicializacion/lanzamiento-simplificado.md) são detalhados os passos necessários para a integração básica do SDK. Nesta seção é adicionada a informação para o lançamento deste componente.

***

## Dependência <a href="#id-2-dependencia" id="id-2-dependencia"></a>

A dependência específica do componente é:

```kts
implementation "com.facephi.androidsdk:tracking_component:$version"
```

***

## Controladores disponíveis <a href="#id-3-controladores-disponibles" id="id-3-controladores-disponibles"></a>

<table data-header-hidden><thead><tr><th width="239.2734375"></th><th></th></tr></thead><tbody><tr><td><strong>Controlador</strong></td><td><strong>Descrição</strong></td></tr><tr><td>TrackingController</td><td>Controlador principal de rastreamento</td></tr><tr><td>TrackingErrorController</td><td>Controlador para <strong>gerenciar</strong> os possíveis <strong>erros</strong> que ocorram</td></tr><tr><td>ExtraDataController</td><td>Controlador para obter o <strong>ExtraData</strong> que permite a <strong>comunicação</strong> do cliente com o servidor com <strong>SelphIDSdk</strong> instalado.</td></tr></tbody></table>

***

## Lançamento simplificado <a href="#id-4-lanzamiento-simplificado" id="id-4-lanzamiento-simplificado"></a>

Deve-se incluir o controlador durante a inicialização do SDK.

```kotlin
SDKController.initSdk(
    ...
    trackingController = TrackingController(),
)
```

### Controle de erros <a href="#id-41-control-de-errores" id="id-41-control-de-errores"></a>

Será possível configurar o callback para controlar os erros de tracking:

```kotlin
SDKController.launch(
     TrackingErrorController {
        Napier.d("Tracking Error: ${it.name} - ${it.error} - ${it.stepType}")
     }
)
```

## Informações avançadas <a href="#id-5-informacion-avanzada" id="id-5-informacion-avanzada"></a>

### Controladores adicionais <a href="#id-51-controladores-adicionales" id="id-51-controladores-adicionales"></a>

#### **ExtraDataController**

Este controlador (*ExtraDataController*) permite obter um identificador da operação atual. Esse dado será enviado ao backend onde serão realizadas as verificações pertinentes.

A chamada para obter o ExtraData, **precisa das informações da operação em curso,** o que **obriga** a que tenha sido **realizado** anteriormente um ***newOperation***.

```kotlin
val result = SDKController.launch(
    ExtraDataController()
)
when (result) {
    is SdkResult.Success -> logs.add("ExtraData: OK")
    is SdkResult.Error -> logs.add(
        "ExtraData: KO - ${result.error.name}"
    )
}
```

### Recepção de erros <a href="#id-52-recepcion-de-errores" id="id-52-recepcion-de-errores"></a>

Na parte do erro, teremos a classe TrackingError. A classe retornará 3 campos:

* name: String com o nome do erro
* error: Informação adicional no caso de ser necessária
* stepType: Componente do SDK no qual o envio do evento falhou

Lista de erros:

* **APPLICATION\_CONTEXT\_ERROR**: Erro na inicialização do contexto
* **ASSET\_LINK**: Erro ao enviar o link do recurso
* **ASSET\_UPLOAD**: Erro durante o carregamento do recurso
* **COMPONENT\_LICENSE\_ERROR**: Licença do componente ausente ou inválida
* **CUSTOMER\_ID**: Erro ao obter ou validar o ID do cliente
* **DEVICE\_EVENT\_ERROR**: Falha durante um evento relacionado ao dispositivo
* **EMPTY\_LICENSE**: Dados de licença vazios ou inexistentes
* **FLOW**: Erro durante o fluxo de execução
* **INITIALIZATION\_ERROR**: Falha geral na inicialização
* **INIT\_IDS\_ERROR**: Erro ao gerar ou atribuir IDs durante a inicialização
* **INIT\_OPERATION**: Operação falhou na fase de inicialização
* **LICENSE\_ERROR**: Licença inválida ou corrompida
* **MANAGER\_NOT\_INITIALIZED**: Tentou-se usar o gerenciador sem inicializá-lo
* **NETWORK\_CONNECTION**: Problema com a conexão de rede
* **NETWORK\_ERROR**: Falha genérica de rede
* **NO\_OPERATION\_CREATED\_ERROR**: Nenhuma operação foi criada quando se esperava
* **OCR\_DATA**: Erro ao processar os dados de OCR
* **OPERATION\_NOT\_CREATED**: A operação esperada não foi gerada
* **OPERATION\_ID**: ID da operação inválido ou ausente
* **SESSION\_ID**: Erro na identificação da sessão
* **SIGNATURE\_RESULT**: Falha no processo ou no resultado de assinatura
* **STEP\_CHANGE**: Transição de etapa inesperada ou inválida
* **STEP\_RESULT\_CANCELLED**: A etapa foi cancelada de forma inesperada
* **STEP\_RESULT\_ERROR**: A etapa terminou com um erro
* **STEP\_RESULT\_EXPIRED**: O resultado da etapa expirou antes de ser concluído
* **STEP\_RESULT\_SUCCEEDED**: A etapa foi bem-sucedida, mas gerou um problema inesperado
* **TOKEN\_ERROR**: Token ausente, expirado ou inválido
* **ADVANCED\_TRACKING\_UPLOAD**: Falha ao enviar os dados de rastreamento avançado
* **TENANT\_ID\_EMPTY\_ERROR**: O ID do tenant estava vazio ou ausente
* **ADVANCED\_TRACKING\_SERIALIZATION\_ERROR**: Erro ao serializar os dados de rastreamento avançado
* **ADVANCED\_TRACKING\_VALIDATION\_ERROR**: Falha na validação dos dados de rastreamento
* **TOKENIZER\_ERROR**: Erro durante o processo de tokenização
