> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# SDK KYC nativos para iOS, Android, React Native e Flutter

> SDKs KYC nativos da Didit para iOS, Android, React Native e Flutter: NFC, prova de vida. Desde $0.33 por KYC completo; $10 grátis/mês.

> [!NOTE]
>
> Estas versões referem-se aos SDKs de verificação de identidade. Os módulos e as camadas de encapsulamento nativos de autenticação têm uma versão separada: consulte os [Guias de início rápido de autenticação](https://docs.didit.me/pt/authentication/overview.md).

Integre a verificação Didit nativamente nas suas aplicações móveis com os nossos SDKs oficiais. Os SDKs nativos oferecem uma **experiência de utilizador fluida**, **melhor desempenho** e **acesso total às capacidades do dispositivo**, em comparação com as integrações baseadas em WebView.

> [!NOTE]
>
> ### **Abordagem recomendada**: Para proporcionar a melhor experiência de utilizador, use os nossos SDKs nativos em vez da integração por WebView. Os SDKs nativos tratam de toda a complexidade das permissões da câmara, da leitura NFC e da prova de vida, prontos a utilizar.

***

## Disponibilidade de SDKs

| Plataforma | Distribuição | Mais recente | NFC | Versão mínima | Documentação |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.13.2 | ✅ (iOS 15+) | iOS 13.0+ (núcleo), iOS 15.0+ (NFC) | [Guia do SDK para iOS](https://docs.didit.me/pt/integration/native-sdks/ios-sdk.md) |
| Android | Maven (repositório personalizado, `me.didit:didit-sdk`) | 4.13.2 | ✅ | API 23+ (Android 6.0) | [Guia do SDK para Android](https://docs.didit.me/pt/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.13.2 | ✅ | RN 0.76+ (Nova Arquitetura), iOS 13.0+ / Android API 24+ | [Guia do SDK para React Native](https://docs.didit.me/pt/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.13.2 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Guia do SDK para Flutter](https://docs.didit.me/pt/integration/native-sdks/flutter-sdk.md) |
| Web (JS) | npm (`@didit-protocol/sdk-web`) | 0.4.0 | — | Qualquer navegador moderno | [Guia do SDK Web](https://docs.didit.me/pt/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **O consentimento biométrico requer o SDK nativo 4.10.0 ou posterior.** Para pessoas abrangidas pela legislação do Illinois, do Texas ou do Colorado, a Didit pode pedir um [consentimento biométrico](https://docs.didit.me/pt/getting-started/biometric-consent.md) explícito antes da primeira captura facial. O fluxo alojado (SDK Web, WebView, navegador) e os SDK nativos para iOS e Android 4.10.0 ou posterior apresentam este passo; o React Native e o Flutter apresentam-no numa versão que fixa o SDK nativo 4.10.0 ou posterior. Um SDK nativo anterior à 4.10.0, ou um que não indique a sua versão, não o consegue fazer: as suas sessões decorrem como antes, e a decisão indica `biometric_consent.status: "pending"` com `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Atualize a versão se verificar pessoas nesses estados.

### Novidades na 4.13.2

No iOS, um pedido de fotografia feito a uma câmara que abre mas não entrega imagens já não fecha inesperadamente a aplicação: cada pedido verifica primeiro se existe uma sessão de câmara em execução com uma ligação de vídeo ativa, e o ecrã apresenta, em vez disso, o erro da câmara ou a opção de ignorar.
No Android, na selfie da consulta de identificação, um pedido de fotografia feito a uma câmara que não entrega imagens termina no erro da câmara do ecrã ao fim de 5 segundos, em vez de esperar indefinidamente.
No ecrã de boas-vindas, enquanto a lista de passos continua abaixo do seu gradiente inferior, surge um botão redondo Deslocar para baixo centrado horizontalmente em relação à lista (também em idiomas escritos da direita para a esquerda), tal como no fluxo Web; um toque desloca a lista para baixo, e o botão fica oculto no fim da lista e enquanto um painel estiver aberto.
A versão 4.13.1 para Android foi uma versão intermédia com apenas o botão Deslocar para baixo; a 4.13.2 estende-o ao iOS, ao React Native e ao Flutter.
O React Native 4.13.2 corrige também um erro de arranque nas compilações de versão para Android reduzidas com R8 e `proguard-android-optimize.txt`: o pacote passa a incluir as suas próprias regras do R8.
O Flutter 4.13.2 compila também com o Android Gradle Plugin 9 e com o Kotlin integrado.

### Novidades na 4.13.0

No passo do telefone, todos os números +1 (EUA e Canadá) mostram, por baixo de Enviar código, uma breve nota sobre o operador ("Podem aplicar-se tarifas padrão de mensagens e dados") com ligações para os Termos de SMS e para a Política de Privacidade, no idioma da pessoa.
A elipse de selfie passa a caber acima dos seus controlos em ecrãs de pouca altura, e desaparecem o botão verde em forma de cápsula «Concluído», o Percebi depois de uma fotografia de documento e o ecrã Selfie tirada: uma fotografia capturada segue diretamente para Em processamento.
Quando a captura de documento é apenas a opção alternativa e uma carteira de identidade digital surge em primeiro lugar, o ecrã de abertura da carteira oferece apenas a carteira, e uma nova tentativa na carteira mantém a verificação aberta sem uma ligação para o documento.
É desenhada uma bandeira para cada código de país que a Didit pode enviar, e nunca a bandeira errada.
Um cenário de sandbox ativado numa sessão que já tinha começado passa a mostrar o motivo, em vez de um erro genérico.
No Android, a carteira Credential Manager indica "Verificar com identidade digital", porque a Google Wallet ou qualquer outra carteira Android que tenha um ID compatível pode responder a este pedido. O iOS não oferece este método.

### Novidades na 4.12.2

O ecrã de boas-vindas centra o logótipo acima do título alinhado à esquerda, e o iOS apresenta o logótipo do cliente com 72 pt de altura, tal como o Android e a Web.
No passo das pessoas-chave KYB, Adicionar representante abre com uma função de representante selecionada e guarda a pessoa em representantes, mesmo quando o fluxo de trabalho desativa algumas funções.
Nos questionários, "Protegido por" fica fixo por baixo do botão em ecrãs pequenos e com texto de grande tamanho, o seletor de país de uma pergunta sobre morada tem como título a morada, e uma lista pendente aberta fica com os mesmos cantos que os campos.

### Novidades na 4.12.1

Num iPhone cujo armazenamento está cheio, as capturas de documento e de selfie mantêm agora o vídeo: o SDK para iOS grava-as em memória e nunca carrega uma gravação sem fotogramas de vídeo.
Uma resposta do servidor que chega atrasada em relação a uma resposta anterior já não reabre o passo que acabou de ser respondido (o passo de NFC, de selfie ou de documento), no iOS e no Android.

### Novidades na 4.12.0

Logótipos de carteiras de identidade digital para todas as carteiras que o fluxo Web apresenta (Mobile-ID, ConnectID, Finnish Trust Network, OneID, Bank iD, MojeID, FranceConnect, Auðkenni, o cartão de identificação estónio e a GOV.UK Wallet), sobre o mesmo suporte branco ou preto do fluxo Web.
As dicas de captura indicam o que fazer quando a captura automática não está a funcionar, a mensagem de boas-vindas mantém fixa a frase legal com tamanhos de texto grandes, e um arranque de sessão recusado deixa de oferecer uma nova tentativa que não pode funcionar.
As câmaras de documento e de selfie têm um botão Trocar câmara ao lado do botão do obturador, com Carregar movido para Dicas, e nada é capturado automaticamente enquanto um painel estiver aberto sobre a câmara.
No Android, o painel Selecionar câmara designa as câmaras "Câmara frontal" e "Câmara traseira" em todos os idiomas.

### Novidades na 4.11.0

A versão 4.11.0 inclui também tudo o que estava previsto para a 4.10.0, que nunca foi publicada, por isso atualize diretamente a partir da 4.9.1.
O fluxo tem uma estrutura redesenhada, com uma nova barra superior, progresso apresentado em palavras e um ecrã de boas-vindas reconstruído.
A captura automática de documentos e de selfies está agora em todas as variantes, com os detetores leves da própria Didit, pelo que as variantes `Core` e `AutoDetection` capturam da mesma forma.
A variante `AutoDetection` e o artefacto `didit-sdk-autodetection` para Android estão obsoletos e são idênticos ao `Core`, e o artefacto `didit-sdk-autodetection-play` para Android já não é publicado.
Novos passos: Verificação bancária, Localização (com ativação mediante adesão, através das variantes iOS `Core-Location`, `NFC-Location` e `All-Location`), assinatura eletrónica e consentimento biométrico.

### O que há de novo na 4.9.1

Os seletores de país dos documentos e do comprovativo de morada passam a abrir no país detetado a partir do endereço IP do utilizador, em iOS e Android, mesmo quando essa consulta termina depois de o ecrã aparecer.
Um país definido na sessão ou escolhido pelo utilizador nunca é substituído.
No Android, o cabeçalho de secção e os campos de um questionário são apresentados no idioma do SDK, e a leitura NFC do passaporte deixa de falhar na variante completa.
Os textos de verificação em russo e quirguiz foram melhorados nas duas plataformas.

### O que há de novo na 4.9.0

Todos os SDKs móveis nativos e multiplataforma passam a oferecer um seletor de idioma opcional no ecrã de boas-vindas da verificação.
Defina `showLanguageSelector` como `true` para mostrar o mesmo seletor compacto e pesquisável usado no fluxo de verificação web.
O seletor fica oculto por predefinição, pelo que as integrações existentes mantêm o comportamento atual até o ativarem.

> [!NOTE]
>
> ### **Alternativa**: se um SDK nativo ainda não estiver disponível para a sua plataforma, pode usar a [Integração WebView](https://docs.didit.me/pt/integration/web-sdks/webview-in-ios-android.md) como alternativa.

***

## Como funciona uma sessão de verificação

Todos os SDKs nativos utilizam a mesma sessão de verificação da Didit. O fluxo é o seguinte:

1. **O teu backend** chama [`POST /v3/session/`](https://docs.didit.me/pt/sessions-api/create-session) com `workflow_id` e qualquer contexto opcional (`vendor_data`, `contact_details`, `expected_details`, `metadata`, `callback`).
2. A Didit devolve um `session_id`, um `session_token` de curta duração e um `url` alojado.
3. A app móvel recebe o `session_token` do backend e transmite-o ao SDK (`startVerification(token: …)`).
4. O SDK nativo abre a interface de verificação, o utilizador conclui os passos e o SDK devolve um resultado com o `status` final da sessão (`Approved`, `Declined`, `In Review`, etc.).
5. **O teu backend** recebe a decisão completa através de um [webhook](https://docs.didit.me/pt/integration/webhooks.md) (`webhook_type: "status.updated"`) e guarda-a.

> [!NOTE]
>
> O resultado do SDK indica o resultado do fluxo de verificação (status). A decisão completa (campos do documento, pontuações de correspondência facial, correspondências AML, dados NFC, avisos) é enviada para o teu servidor através de webhook e também pode ser obtida através do endpoint [Obter a decisão da sessão](https://docs.didit.me/pt/sessions-api/retrieve-session.md). Nunca confies apenas no resultado do lado do cliente para decisões de autorização.

Todos os SDKs nativos suportam também o modo **UniLink** (apenas com o ID do fluxo de verificação, sem backend). Utilize o UniLink para protótipos rápidos e o método com token de sessão para produção.

***

## SDK para iOS

**Quando utilizar**: aplicações nativas em Swift / SwiftUI / UIKit para iOS 13+.

Um SDK para iOS leve e controlado pelo servidor, para verificação de identidade com configuração mínima.

> [card] [Repositório no GitHub](https://github.com/didit-protocol/sdk-ios)
>
> Consulte o código-fonte e os exemplos no GitHub

**Funcionalidades principais:**

* Suporte a SwiftUI e UIKit
* Leitura de passaporte e cartão de identidade por NFC (iOS 15+; as variantes sem NFC `Core` e `AutoDetection` removem o NFC e o OpenSSL, e são implementadas no iOS 13+)
* 54 idiomas suportados
* Tema da interface personalizável
* Integração com token de sessão ou ID do fluxo de verificação

**Início rápido:**

```swift theme={null}
import DiditSDK

// Start verification
DiditSdk.shared.startVerification(token: "your-session-token")

// Handle result
.diditVerification { result in
    switch result {
    case .completed(let session):
        print("Status: \(session.status)")
    case .cancelled:
        print("Cancelled")
    case .failed(let error, _):
        print("Error: \(error)")
    }
}
```

→ [**Documentação completa do SDK para iOS**](https://docs.didit.me/pt/integration/native-sdks/ios-sdk.md)

***

## SDK para Android

**Quando utilizar**: aplicações nativas em Kotlin / Jetpack Compose / Java para Android 6.0 (API 23) ou superior.

Um SDK para Android leve e controlado pelo servidor, para verificação de identidade com configuração mínima.

> [card] [Repositório no GitHub](https://github.com/didit-protocol/sdk-android)
>
> Consulte o código-fonte e os exemplos no GitHub

**Funcionalidades principais:**

* Suporte a Kotlin e Jetpack Compose
* Leitura de passaporte e cartão de identidade por NFC (o artefacto `me.didit:didit-sdk-core`, ativado opcionalmente, remove as dependências de NFC)
* Deteção automática de documentos e rostos com ML na API 24+ (com recurso à captura manual na API 23)
* 54 idiomas suportados
* Tema da interface personalizável
* Integração com token de sessão ou ID do fluxo de verificação

**Início rápido:**

```kotlin theme={null}
import me.didit.sdk.DiditSdk
import me.didit.sdk.VerificationResult

// Initialize in Application.onCreate()
DiditSdk.initialize(this)

// Start verification
DiditSdk.startVerification(token = "your-session-token") { result ->
    when (result) {
        is VerificationResult.Completed -> Log.d("Didit", "Status: ${result.session.status}")
        is VerificationResult.Cancelled -> Log.d("Didit", "Cancelled")
        is VerificationResult.Failed -> Log.e("Didit", "Error: ${result.error.message}")
    }
}
```

→ [**Documentação completa do SDK para Android**](https://docs.didit.me/pt/integration/native-sdks/android-sdk.md)

***

## SDK para React Native

**Quando utilizar**: aplicações multiplataforma em React Native ou Expo que precisam de uma única API em TypeScript para iOS e Android (RN 0.76+, New Architecture).

Um SDK multiplataforma para React Native que envolve os SDKs nativos de iOS e Android com uma API unificada em TypeScript.

> [card] [Repositório no GitHub](https://github.com/didit-protocol/sdk-react-native)
>
> Consulte o código-fonte e os exemplos no GitHub

**Funcionalidades principais:**

* Uma única API em TypeScript para iOS e Android
* Suporte a Expo com plugin de configuração sem configuração adicional (é necessária uma compilação de desenvolvimento, o Expo Go não é suportado)
* Suporte à CLI do React Native
* Leitura de passaporte e cartão de identidade por NFC (pode ser desativada com `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 idiomas suportados (herdados dos SDKs nativos)
* Integração com token de sessão ou ID do fluxo de verificação

**Início rápido:**

```tsx theme={null}
import { startVerification, VerificationStatus } from '@didit-protocol/sdk-react-native';

const result = await startVerification('your-session-token');

switch (result.type) {
  case 'completed':
    console.log('Status:', result.session.status);
    break;
  case 'cancelled':
    console.log('Cancelled');
    break;
  case 'failed':
    console.log('Error:', result.error.message);
    break;
}
```

→ [**Documentação completa do SDK para React Native**](https://docs.didit.me/pt/integration/native-sdks/react-native-sdk.md)

***

## SDK para Flutter

**Quando utilizar**: aplicações multiplataforma em Flutter que precisam de uma única API em Dart para iOS e Android (Flutter 3.3+, Dart 3.11+).

Um SDK multiplataforma para Flutter que envolve os SDKs nativos de iOS e Android com uma API unificada em Dart.

> [card] [Pacote no pub.dev](https://pub.dev/packages/didit_sdk)
>
> Consulte o pacote no pub.dev

**Funcionalidades principais:**

* Uma única API em Dart para iOS e Android
* Integração com os SDKs nativos através de canais de plataforma
* Leitura de passaporte e cartão de identidade por NFC (pode ser desativada com `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 54 idiomas suportados (herdados dos SDKs nativos)
* Integração com token de sessão ou ID do fluxo de verificação

**Início rápido:**

```dart theme={null}
import 'package:didit_sdk/sdk_flutter.dart';

final result = await DiditSdk.startVerification('your-session-token');

switch (result) {
  case VerificationCompleted(:final session):
    print('Status: ${session.status}');
  case VerificationCancelled():
    print('Cancelled');
  case VerificationFailed(:final error):
    print('Error: ${error.message}');
}
```

→ [**Documentação completa do SDK para Flutter**](https://docs.didit.me/pt/integration/native-sdks/flutter-sdk.md)

***

## SDK para Web (JavaScript)

**Quando utilizar**: aplicações para navegador e frameworks web (React, Vue, Angular, Next.js, Nuxt, Svelte, JavaScript puro). O SDK para Web abre o fluxo de verificação alojado num modal ou num iframe incorporado. Para apps móveis, prefira os SDKs nativos acima.

Um SDK em JavaScript para aplicações web, com suporte a React, Vue, Angular, Next.js, Nuxt, Svelte e JavaScript puro.

> [card] [Pacote no npm](https://www.npmjs.com/package/@didit-protocol/sdk-web)
>
> Consulte o pacote no npm

**Funcionalidades principais:**

* Gestão programática de sessões e callbacks de eventos
* Suporte a React, Vue, Angular, Next.js, Nuxt, Svelte e JavaScript puro
* Suporte completo a TypeScript
* Modos modal e incorporado
* Gestão de estado para interfaces personalizadas

**Início rápido:**

```typescript theme={null}
import { DiditSdk } from '@didit-protocol/sdk-web';

DiditSdk.shared.onComplete = (result) => {
  switch (result.type) {
    case 'completed':
      console.log('Status:', result.session?.status);
      break;
    case 'cancelled':
      console.log('Cancelled');
      break;
    case 'failed':
      console.error('Error:', result.error?.message);
      break;
  }
};

DiditSdk.shared.startVerification({
  url: 'https://verify.didit.me/session/session-token'
});
```

→ [**Documentação completa do SDK em JavaScript**](https://docs.didit.me/pt/integration/web-sdks/javascript-sdk.md) | [**Todos os SDKs para Web**](https://docs.didit.me/pt/integration/web-sdks/overview.md)

***

## Escolher uma integração

Os SDKs nativos são a melhor opção quando precisa de leitura de passaportes eletrónicos por NFC, da captura pela câmara com a menor latência e de uma experiência dentro da aplicação indistinguível dos restantes ecrãs nativos. Use a **Integração WebView** como alternativa quando não puder publicar uma atualização do SDK nativo (por exemplo, aplicações existentes que não pode recompilar, ou plataformas sem SDK nativo da Didit).

| Funcionalidade | SDKs nativos | WebView |
| - | :-: | :-: |
| Experiência do utilizador | Ecrãs nativos, suporte completo a gestos | Fluxo web alojado num navegador do sistema ou WebView |
| Captura pela câmara | No dispositivo, ajustada pelo SDK para documentos de identidade e selfies | Depende do navegador |
| Leitura de passaporte eletrónico por NFC | ✅ Suportada (iOS 15+, Android com NFC) | ❌ Não disponível |
| Desempenho da prova de vida | Pipeline de ML nativo | Pipeline de ML do navegador |
| Personalização de marca branca | ✅ Configurada na consola | ✅ Configurada na consola |
| Impacto na análise da App Store / Play Store | Acrescenta o entitlement NFC e aumenta o tamanho do binário | Nenhum: basta abrir um URL |
| Quando usar | Aplicações em produção, fluxos com NFC, melhor UX | Integração rápida, stack exclusivamente web, alternativa |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.