---
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/dual-api/developers/sdks-and-tools/ios/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: `3.3.0`
:::

## Atributos do PrepareInfo

| 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`**

Chame o método estático `UnicoSDK.initializeSDK`, passando o seu `AcessoBioConfigDataSource` e o `environment`.

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

  ### Swift

    ```swift
    UnicoSDK.initializeSDK(
        config: YourUnicoConfig(),
        environment: .UAT
    )
    ```

### Objective-C

    ```objectivec
    [UnicoSDK initializeSDKWithConfig:[YourUnicoConfig new] environment:UAT];
    ```

  O `config` é o mesmo `AcessoBioConfigDataSource` que você já implementa para a captura — 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 é `.PROD`.

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

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

  ### Swift

    ```swift
    let prepareInfo = PrepareInfo(externalUserId: "external_user_id")

    UnicoSDK.startSilentValidation(prepareInfo: prepareInfo) { result in
        switch result {
        case .success:
            break
        case .failure(let error):
            print(error.code, error.desc, error.info)
        }
    }
    ```

### Objective-C

    ```objectivec
    PrepareInfo *prepareInfo = [[PrepareInfo alloc] initWithExternalUserId:@"external_user_id"
                                                                  useCase:nil];

    [UnicoSDK startSilentValidationWithPrepareInfo:prepareInfo
                                   errorCompletion:^(ErrorBio * _Nullable error) {
        if (error == nil) {
            // ...
        } else {
            // error.code, error.desc, error.info
        }
    }];
    ```

  Se a validação acontecer no início do fluxo, por exemplo no login, aguarde o callback de sucesso 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. |

****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](/dual-api/developers/api-reference/api/post-processes).

  Inclua o mesmo `externalUserId` enviado no `PrepareInfo` 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>