> For the complete documentation index, see [llms.txt](https://docs.caf.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.caf.io/caf-sdk/caf-sdk-pt-br/ios/getting-started-with-the-sdk-3.md).

# Smart Capture

{% hint style="warning" %}

## Este guia abrange a versão 7.0.0 e superiores. Para versões anteriores à 7.0.0, consulte a [documentação legada](/caf-sdk/caf-sdk-pt-br/ios/getting-started-with-the-sdk-5.md).

{% endhint %}

### Visão geral

**Captura Inteligente** captura documentos de identidade com fluxos guiados e opção de **captura automática** e **pré-visualização**. Ele usa a mesma **Certta** sessão do Face Liveness e do Document Detector: **configurar** credenciais uma vez e, em seguida, abra a interface de captura.

No iOS, o Smart Capture é integrado por meio de **`CerttaSmartCapture`**, **`CerttaSmartCaptureDelegate`** e o módulo de framework **SmartCapture** . **`CerttaSmartCaptureConfiguration`** mapeia para **`CafSmartCaptureConfig`** para o **`CafSDKProvider`** pipeline unificado.

Se **SmartCapture** não estiver vinculado no seu target, o SDK não pode registrar um serviço de Smart Capture; **`CafSDKProvider`** não adicionará um módulo de captura para esse fluxo (vincule o produto conforme exigido pela sua distribuição).

Para **sessão Certta** configuração (token, ID do usuário, ambiente), consulte o **sessão Certta (início rápido)**. Para **Detector de Documentos** (fluxo baseado em etapas, **`CerttaDocumentDetectorConfiguration`**), consulte **Detector de Documentos para iOS (Certta)**.

***

### Pré-requisitos

Antes de prosseguir, certifique-se de que o **CAF SDK** esteja instalado corretamente. Se você ainda não fez isso, consulte nosso **guia de instalação** (Swift Package Manager ou CocoaPods).

Você também precisa de:

* **Câmera** string de permissão em **Info.plist** (**`NSCameraUsageDescription`**).
* **Sessão Certta ativa** — **`Certta.shared.configure(configuration:)`** com **`mobileToken`** e **`userID`** não vazio (mesmo contrato do Face Liveness e do Document Detector).
* **SmartCapture** framework vinculado ao seu target, além de **CafSDK** e quaisquer outros produtos exigidos pela sua integração (consulte as instruções do seu pacote / Pod).

```xml
<key>NSCameraUsageDescription</key>
<string>Precisamos da câmera para capturar seu documento.</string>
```

***

### CerttaSmartCaptureConfiguration

Eles mapeiam internamente para **`CafSmartCaptureConfig`** para o **`CafSDKProvider`** pipeline unificado.

Todos os parâmetros têm padrões; substitua apenas o que você precisar.

| Parâmetro            | Tipo           | Descrição                                                                         |
| -------------------- | -------------- | --------------------------------------------------------------------------------- |
| **`requestTimeout`** | `TimeInterval` | Tempo limite de rede / solicitação em segundos. Padrão: **`60`**.                 |
| **`previewEnabled`** | `Bool`         | Se a **pré-visualização** etapa pós-captura está habilitada. Padrão: **`true`**.  |
| **`autoCapture`**    | `Bool`         | Se a **captura automática** está habilitada quando suportada. Padrão: **`true`**. |

***

### Iniciando o Smart Capture

Use o **`CerttaSmartCapture`** singleton. Defina o **`delegate`** (ou faça o **`UIViewController`** para **`CerttaDocumentDetectorDelegate`**&#x71;ue apresenta a tela conformar-se); a resolução corresponde ao Document Detector: **`delegate ?? (presenter as? CerttaDocumentDetectorDelegate)`**.

```swift
CerttaSmartCapture.shared.delegate = self

CerttaSmartCapture.shared.open(
    from: self,
    configuration: CerttaSmartCaptureConfiguration(
        requestTimeout: 60,
        previewEnabled: true,
        autoCapture: true
    )
)
```

**`loadSession(from:configuration:)`** está disponível com o mesmo **`CerttaSmartCaptureConfiguration`** para pré-carregar recursos antes de **`abertas`**. Unificado **`.loading` / `.loaded`** eventos são **não** entregues para **`CerttaDocumentDetectorDelegate`**; use **`didLog`** para diagnósticos quando necessário.

***

### Entendendo os eventos e resultados do Smart Capture

O Smart Capture usa o mesmo **`CerttaDocumentDetectorDelegate`** que **Detector de Documentos** portanto, o tratamento de sessão, sucesso, falha e cancelamento permanece consistente entre os produtos de documentos da Certta.

```swift
extension MyViewController: CerttaDocumentDetectorDelegate {

    func didFinish(signedResponse: String) {
        // Sucesso — JWT / payload assinado do CAF
    }

    func didFail(_ failure: CerttaDocumentDetectorFailure) {
        switch failure {
        case .processingFailed(let result, let cause):
            break
        }
    }

    func didFinishWith(_ error: CerttaError) {
        switch error {
        case .initializationError(let message): break
        case .permissionError(let message): break
        case .securityError(let message): break
        case .unknownError(let message): break
        case .networkError(let message): break
        }
    }

    func didCancel() {
        // O usuário dispensou o fluxo
    }

    func didLog(level: String, message: String) {
        // Mensagens de progresso e informativas
    }
}
```

#### `didFinish(signedResponse:)`

A string é o **resultado assinado** do módulo. A documentação da sua integração backend ou do CAF define como validá-lo, decodificá-lo e armazená-lo. **Não registre o token completo em builds de produção.**

#### `didFail(_ failure: CerttaDocumentDetectorFailure)`

Falhas de processamento do pipeline — hoje **`processingFailed(result:cause:)`**.

#### `didFinishWith(_ error: CerttaError)`

Erros bloqueadores (sessão não configurada, **permissão da câmera**, **rede**, **segurança**, **inicialização**, etc.). **`CerttaError`** alinha-se com **Face Liveness** e outros módulos da Certta. Use **`localizedDescription`** / **`message`** nos alertas.

#### `didCancel()`

O usuário **cancelado** o fluxo. Volte para a tela anterior ou ofereça uma tentativa novamente.

#### `didLog(level:message:)`

Eventos de progresso e informativos; mapeie para a UI ou análises conforme necessário.

#### Tipos para outras APIs

**`CerttaSmartCaptureEvent`**, **`CerttaSmartCaptureResult`**&#x65; **`CerttaSmartCaptureFailure`** existem para APIs de nível mais alto ou futuras. O **Certta** caminho acima usa **`CerttaDocumentDetectorDelegate`** por consistência com o Document Detector e o Face Liveness.

***

### Sessão e tema

Chame **`Certta.shared.configure(configuration:)`** antes **`abertas`** ou **`loadSession`**.

Opcional **`Certta.shared.setColorConfiguration(_:)`** é aplicado quando a interface do Smart Capture lê as cores da sessão de **Certta** (mesmo padrão do Document Detector e do Face Liveness).

**Modo escuro / claro:** build **`CafColorConfiguration`** usando **`UITraitCollection.current.userInterfaceStyle`** se você precisar de paletas diferentes por modo.

```swift
Certta.shared.setColorConfiguration(
    CafColorConfiguration(
        primaryColor: "#FFFFFF",
        secondaryColor: "#222222",
        contentColor: "#FFFFFF",
        backgroundColor: "#000000",
        mediumColor: "#555555",
        dialogBackgroundColor: "#1C1C1E",
        dialogBorderColor: "#E5E5E7"
    )
)
```

***

### Escolhendo entre Document Detector e Smart Capture

| Produto                    | Ponto de entrada                    | Configuração                                                                               |
| -------------------------- | ----------------------------------- | ------------------------------------------------------------------------------------------ |
| **Captura Inteligente**    | **`CerttaSmartCapture.shared`**     | **`CerttaSmartCaptureConfiguration`** (timeout, pré-visualização, captura automática)      |
| **Detector de Documentos** | **`CerttaDocumentDetector.shared`** | **`CerttaDocumentDetectorConfiguration`** (etapas do fluxo, layout, upload, instruções, …) |

Ambos usam **`CerttaDocumentDetectorDelegate`** e a mesma sessão Certta. Escolha **Captura Inteligente** para o produto guiado Smart Capture; escolha **Detector de Documentos** quando você precisar do fluxo de documento clássico baseado em etapas e da configuração do hub descrita em **Detector de Documentos para iOS (Certta)**.

***

### Notas de versão

Veja [**GitHub Releases**](https://github.com/combateafraude/caf-ios-sdk) para versões, mudanças que quebram compatibilidade e Xcode / iOS mínimos.

***

### Suporte técnico e dicas de uso

Para mais detalhes e cenários de uso avançados, consulte os seguintes recursos:

* **Repositório GitHub:** código-fonte, rastreamento de issues e notas de lançamento no [repositório GitHub do CafSDK](https://github.com/combateafraude/caf-ios-sdk).
* **Document Detector (Certta):** Detector de Documentos para iOS (Certta) — mesmo delegate, configuração e fluxo diferentes.
* **Configurações do Document Detector:** Configurações do Document Detector — **`CafDocumentDetectorConfig`** ao usar o caminho do Document Detector ou **`CafSDKProvider.Builder`**.
* **FAQs e solução de problemas:** consulte nossa seção de FAQ para problemas comuns e dicas de solução de problemas.
* **Suporte:** para obter assistência adicional, entre em contato com nossa equipe de suporte ou participe do fórum da nossa comunidade de desenvolvedores.

Atualizamos continuamente a documentação à medida que novos recursos e melhorias são lançados. Fique por dentro das próximas atualizações!


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.caf.io/caf-sdk/caf-sdk-pt-br/ios/getting-started-with-the-sdk-3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
