---
title: Revalidação Silenciosa
description: Utiliza o motor da Revalidação Silenciosa, que analisa o contexto comportamental do usuário no efeito de rede Unico, e entrega o sinal de confiança da transação corrente. Ou seja, entregamos o nível de confiança de ser o usuário esperado na transação.
canonical: https://developer.unico.io/pt-BR/developers/sdks-and-tools/flutter/capture-flow/capture-types/silent-revalidation
locale: pt-BR
generated_by: markdown-export
---

Utiliza o motor da Revalidação Silenciosa, que analisa o contexto comportamental do usuário no efeito de rede Unico, e entrega o sinal de confiança da transação corrente. Ou seja, entregamos o nível de confiança de ser o usuário esperado na transação.

:::info[Requisito]
Versão mínima: `4.62.0`
:::

## Atributos do UnicoCheckPrepareInfo

| Atributo | Tipo | Obrigatório | Descrição |
|---|---|:-:|---|
| `externalUserId` | `String` | ✅ | Identificador do usuário no seu sistema. Automaticamente hasheado com SHA-256 antes da transmissão, nunca enviado em texto plano. |

## Iniciando uma Revalidação Silenciosa

****Passo 1** — Implemente `initializeSDK` no código nativo**

O `initializeSDK` não é exposto no Dart. Ele precisa rodar antes de a engine do Flutter iniciar, então você o chama no código nativo do seu app — `Application.onCreate` no Android e `application(_:didFinishLaunchingWithOptions:)` no iOS.

  :::warning[Chame durante a inicialização do app]
  `UnicoSDK.initializeSDK` deve ser chamado o mais cedo possível durante a inicialização do app. Chamá-lo mais tarde reduz o tempo de processamento em segundo plano e aumenta a chance de respostas de autenticação inconclusivas.
  :::

  ### Android

    ```kotlin
    import android.app.Application
    import com.acesso.acessobio_android.onboarding.UnicoSDK
    import com.acesso.acessobio_android.onboarding.models.Environment
    import com.acesso.acessobio_android.onboarding.models.UnicoSDKConfig

    class MainApplication : Application() {
        override fun onCreate() {
            super.onCreate()

            UnicoSDK.initializeSDK(
                this,
                UnicoSDKConfig(
                    sdkKey = "your_sdk_key",
                    bundleId = "your_bundle_id",
                    environment = Environment.UAT
                )
            )
        }
    }
    ```

    Registre a classe em `android/app/src/main/AndroidManifest.xml`:

    ```xml
    <application android:name=".MainApplication">
    ```

    O plugin expõe o SDK nativo de captura para a sua aplicação, então o `UnicoSDK` já está no seu compile classpath — nenhuma dependência extra é necessária em `android/app/build.gradle`.

### iOS

    ```swift
    import AcessoBio
    import Flutter
    import UIKit

    @main
    class AppDelegate: FlutterAppDelegate {
        override func application(
            _ application: UIApplication,
            didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
        ) -> Bool {
            UnicoSDK.initializeSDK(config: YourUnicoConfig(), environment: .UAT)

            GeneratedPluginRegistrant.register(with: self)
            return super.application(application, didFinishLaunchingWithOptions: launchOptions)
        }
    }
    ```

    O `config` é um `AcessoBioConfigDataSource` — a `sdkKey` vem do `getHostKey()` e o bundle do `getBundleIdentifier()`:

    ```swift
    final class YourUnicoConfig: NSObject, AcessoBioConfigDataSource {
        func getBundleIdentifier() -> String { "your_bundle_id" }
        func getHostKey() -> String { "your_sdk_key" }
    }
    ```

  Se o `environment` for omitido, o padrão é produção.

****Passo 2** — Implemente `startSilentValidation`**

Depois do `initializeSDK`, associe a coleta já em andamento ao usuário identificado chamando `startSilentValidation` com um `UnicoCheckPrepareInfo` contendo o `externalUserId`.

  ```dart
  import 'package:unico_check/unico_check.dart';

  try {
    await UnicoSilentAuthDefault().startSilentValidation(
      UnicoCheckPrepareInfo(externalUserId: 'external_user_id'),
    );
  } on UnicoError catch (error) {
    // error.code, error.description, error.info
  }
  ```

  O `Future` retornado é completado quando a validação inicia com sucesso, e lança `UnicoError` em caso de falha.

  Se a validação acontecer no início do fluxo, por exemplo no login, aguarde o `Future` ser completado antes de avançar para o Passo 3.

  ## Erros

  | Código | Significado |
  |---|---|
  | `75001` | SDK não inicializado. O `initializeSDK` não foi chamado, ainda não terminou, ou falhou. |
  | `75000` | Falha genérica na coleta. |

  O `UnicoError.info` carrega a etapa do fluxo que falhou. Ele é fornecido no iOS e é sempre nulo no Android.

****Passo 3** — Crie o processo e autentique**

Com a validação em andamento, crie o processo de verificação para concluir a autenticação. Veja [Referência da API ▸ API ▸ Criar Processo](/developers/api-reference/api/post-processes).

  Inclua o mesmo `externalUserId` enviado no `UnicoCheckPrepareInfo` do Passo 2 no corpo da requisição — é isso que permite ao backend correlacionar a criação do processo com a validação já em andamento.

  ```bash
  curl -X POST https://api.id.unico.app/processes/v1 \
    -H "Authorization: Bearer $TOKEN" \
    -H "APIKEY: $API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "subject": {
        "duiType": 1,
        "code": "12345678909",
        "name": "Luke Skywalker",
        "gender": "M",
        "birthDate": "2000-05-20",
        "email": "luke@example.com",
        "phone": "5519725570707"
      },
      "useCase": "Onboarding",
      "externalUserId": "external_user_id"
    }'
  ```

  A resposta inclui o campo `silentAuth.result` com o resultado da autenticação:

  ```json
  {
      "id": "80371b2a-3ac7-432e-866d-57fe37896ac6",
      "status": 3,
      "silentAuth": {
          "result": "yes"
      }
  }
  ```

  | Campo | Tipo | Descrição |
  |---|---|---|
  | `silentAuth.result` | string | `yes` ou `no` — veja os valores possíveis abaixo. |

  <details>
  **`silentAuth.result` — valores possíveis**

  | Valor | Significado |
  |---|---|
  | `yes` | Autenticação aprovada, usuário reconhecido com confiança suficiente, nenhuma captura adicional necessária. |
  | `no` | Dados insuficientes para aprovar silenciosamente. É recomendado autenticar via biometria (selfie) ou outro método alternativo. |

</details>