> ## 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.

# SDKs nativos de KYC: iOS, Android, RN e Flutter

> SDKs nativos de KYC da Didit para iOS, Android, React Native e Flutter: NFC, prova de vida e captura no dispositivo. Desde $0.33 por KYC completo.

> [!NOTE]
>
> Estas versões se referem aos SDKs de verificação de identidade. Os módulos e wrappers nativos de Authentication têm um lançamento separado: veja os [inícios rápidos de Authentication](https://docs.didit.me/authentication/overview.md).

Integre a verificação da Didit de forma nativa nos seus aplicativos para celular com nossos SDKs oficiais. Os SDKs nativos oferecem uma **experiência de usuário fluida**, **melhor desempenho** e **acesso total aos recursos do dispositivo**, em comparação com integrações baseadas em WebView.

> [!NOTE]
>
> ### **Abordagem recomendada**: Para a melhor experiência do usuário, use nossos SDKs nativos em vez da integração por WebView. Os SDKs nativos cuidam de toda a complexidade de permissões de câmera, leitura NFC e detecção de prova de vida, já prontos para uso.

***

## Disponibilidade dos SDKs

| Plataforma | Distribuição | Mais recente | NFC | Versão mínima | Documentação |
| - | - | - | :-: | - | - |
| iOS | Swift Package Manager, CocoaPods | 4.9.1 | ✅ (iOS 15+) | iOS 13.0+ (core), iOS 15.0+ (NFC) | [Guia do SDK para iOS](https://docs.didit.me/integration/native-sdks/ios-sdk.md) |
| Android | Maven (repositório próprio, `me.didit:didit-sdk`) | 4.9.1 | ✅ | API 23+ (Android 6.0) | [Guia do SDK para Android](https://docs.didit.me/integration/native-sdks/android-sdk.md) |
| React Native | npm / yarn (`@didit-protocol/sdk-react-native`) | 4.9.1 | ✅ | RN 0.76+ (New Architecture), iOS 13.0+ / Android API 24+ | [Guia do SDK para React Native](https://docs.didit.me/integration/native-sdks/react-native-sdk.md) |
| Flutter | pub.dev (`didit_sdk`) | 4.9.1 | ✅ | Flutter 3.3+, Dart 3.11+, iOS 13.0+ / Android API 23+ | [Guia do SDK para Flutter](https://docs.didit.me/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/integration/web-sdks/javascript-sdk.md) |

> [!NOTE]
>
> **O consentimento biométrico exige o nativo 4.10.0 ou posterior.** Para pessoas abrangidas pela legislação de Illinois, Texas ou Colorado, a Didit pode pedir [consentimento biométrico](https://docs.didit.me/pt-br/getting-started/biometric-consent.md) explícito antes da primeira captura facial. O fluxo hospedado (SDK Web, WebView, navegador) e os SDKs nativos para iOS e Android 4.10.0 ou posterior exibem essa etapa; React Native e Flutter a exibem em uma versão que fixa o nativo 4.10.0 ou posterior. Um SDK nativo anterior à 4.10.0, ou que não informa sua versão, não consegue: suas sessões rodam como antes, e a decisão informa `biometric_consent.status: "pending"` com `reason: "BIOMETRIC_CONSENT_UNSUPPORTED_SDK"`. Atualize se você verifica pessoas nesses estados.

### Novidades da 4.9.1

Os seletores de país de documento e de comprovante de endereço agora abrem no país detectado a partir do endereço IP do usuário no iOS e no Android, mesmo quando essa consulta termina depois que a tela aparece.
Um país definido na sessão ou escolhido pelo usuário nunca é sobrescrito.
No Android, o cabeçalho de seção e os campos de um questionário são exibidos no idioma do SDK, e a leitura NFC de passaportes não trava mais na variante completa.
O texto da verificação em russo e em quirguiz foi aprimorado nas duas plataformas.

### Novidades da 4.9.0

Todos os SDKs para celular, nativos e multiplataforma, agora oferecem um seletor de idioma opcional na tela de boas-vindas da verificação.
Defina `showLanguageSelector` como `true` para exibir o mesmo seletor compacto e pesquisável usado pelo fluxo de verificação web.
O seletor fica oculto por padrão, então as integrações existentes mantêm o comportamento atual até que o ativem.

> [!NOTE]
>
> ### **Alternativa**: Se ainda não houver um SDK nativo para a sua plataforma, você pode usar a [integração por WebView](https://docs.didit.me/integration/web-sdks/webview-in-ios-android.md) como solução alternativa.

***

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

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

1. **Seu backend** chama [`POST /v3/session/`](https://docs.didit.me/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 uma `url` hospedada.
3. **Seu aplicativo para celular** recebe o `session_token` do seu backend e o passa ao SDK (`startVerification(token: …)`).
4. O SDK nativo abre a interface de verificação, o usuário conclui as etapas e o SDK devolve um resultado com o `status` final da sessão (`Approved`, `Declined`, `In Review` etc.).
5. **Seu backend** recebe a decisão completa por um [webhook](https://docs.didit.me/integration/webhooks.md) (`webhook_type: "status.updated"`) e a armazena.

> [!NOTE]
>
> O resultado do SDK informa o desfecho do fluxo (status). A decisão completa - campos do documento, pontuações de correspondência facial, ocorrências de AML, dados de NFC, avisos - é entregue ao seu servidor por webhook e também pode ser obtida no endpoint [Retrieve Session Decision](https://docs.didit.me/sessions-api/retrieve-session.md). Nunca confie apenas no resultado do lado do cliente para decisões de autorização.

Todos os SDKs nativos também oferecem um modo **UniLink** (somente o ID do fluxo, sem necessidade de backend). Use o UniLink para protótipos rápidos e o método de token de sessão em produção.

***

## SDK para iOS

**Quando usar**: aplicativos nativos em Swift / SwiftUI / UIKit voltados para iOS 13+.

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

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

**Principais recursos:**

* Suporte a SwiftUI e UIKit
* Leitura NFC de passaporte/documento de identidade (iOS 15+; as variantes `Core` e `AutoDetection`, sem NFC, removem NFC e OpenSSL e rodam em iOS 13+)
* 53 idiomas compatíveis
* Temas de interface personalizáveis
* Integração por token de sessão ou ID do fluxo

**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/integration/native-sdks/ios-sdk.md)

***

## SDK para Android

**Quando usar**: aplicativos nativos em Kotlin / Jetpack Compose / Java voltados para Android 6.0 (API 23) ou superior.

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

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

**Principais recursos:**

* Suporte a Kotlin e Jetpack Compose
* Leitura NFC de passaporte/documento de identidade (o artefato opcional `me.didit:didit-sdk-core` remove as dependências de NFC)
* Detecção automática de documento e rosto baseada em ML na API 24+ (captura manual como alternativa na API 23)
* 53 idiomas compatíveis
* Temas de interface personalizáveis
* Integração por token de sessão ou ID do fluxo

**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/integration/native-sdks/android-sdk.md)

***

## SDK para React Native

**Quando usar**: aplicativos 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.

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

**Principais recursos:**

* Uma única API em TypeScript para iOS e Android
* Suporte ao Expo com config plugin sem configuração (exige development build - não funciona no Expo Go)
* Suporte à CLI do React Native
* Leitura NFC de passaporte/documento de identidade (desative com `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 53 idiomas compatíveis (herdados dos SDKs nativos)
* Integração por token de sessão ou ID do fluxo

**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/integration/native-sdks/react-native-sdk.md)

***

## SDK para Flutter

**Quando usar**: aplicativos 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.

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

**Principais recursos:**

* Uma única API em Dart para iOS e Android
* Integração por platform channel com os SDKs nativos
* Leitura NFC de passaporte/documento de identidade (desative com `DIDIT_SDK_IOS_NFC_ENABLED=false` / `diditSdkAndroidNfcEnabled=false`)
* 53 idiomas compatíveis (herdados dos SDKs nativos)
* Integração por token de sessão ou ID do fluxo

**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/integration/native-sdks/flutter-sdk.md)

***

## SDK Web (JavaScript)

**Quando usar**: aplicativos baseados em navegador e frameworks web (React, Vue, Angular, Next.js, Nuxt, Svelte, JS puro). O SDK Web abre o fluxo de verificação hospedado em um modal ou em um iframe incorporado - para aplicativos 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 JS puro.

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

**Principais recursos:**

* Gerenciamento programático de sessões e callbacks de eventos
* Suporte a React, Vue, Angular, Next.js, Nuxt, Svelte e JS puro
* Suporte completo a TypeScript
* Modos modal e incorporado (inline)
* Gerenciamento 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 JavaScript**](https://docs.didit.me/integration/web-sdks/javascript-sdk.md) | [**Todos os SDKs Web**](https://docs.didit.me/pt-br/integration/web-sdks/overview.md)

***

## Como escolher uma integração

Os SDKs nativos são a melhor opção quando você precisa de leitura NFC de passaporte eletrônico, captura de câmera com a menor latência e uma experiência dentro do aplicativo indistinguível das suas outras telas nativas. Use a **integração por WebView** como alternativa quando não for possível publicar uma atualização com um SDK nativo (por exemplo, aplicativos legados que você não consegue recompilar, ou plataformas sem SDK nativo da Didit).

| Recurso | SDKs nativos | WebView |
| - | :-: | :-: |
| Experiência do usuário | Telas nativas, suporte completo a gestos | Fluxo web hospedado em um navegador do sistema/WebView |
| Captura de câmera | No dispositivo, ajustada pelo SDK para documento e selfie | Depende do navegador |
| Leitura NFC de passaporte eletrônico | ✅ Compatível (iOS 15+, Android com NFC) | ❌ Não disponível |
| Desempenho da prova de vida | Pipeline de ML nativo | Pipeline de ML do navegador |
| Tema de marca própria | ✅ Controlado pelo console | ✅ Controlado pelo console |
| Impacto na revisão da App Store / Play Store | Adiciona a permissão de NFC e aumenta o tamanho do binário | Nenhum - apenas abre uma URL |
| Quando usar | Aplicativos em produção, fluxos com NFC, melhor UX | Integração rápida, stack somente web, alternativa |


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