---
title: Captura de documentos
canonical: https://developer.unico.io/pt-BR/dual-api/developer/sdks-and-tools/ios-sdk/document-capture/
locale: pt-BR
generated_by: markdown-export
---

Captura de documentos de identidade. O SDK apresenta um frame para auxiliar o usuário no posicionamento do documento; após o posicionamento, o usuário clica no botão para capturar a foto.

:::warning[Sem validação de conteúdo]
O SDK não realiza nenhum tipo de validação sobre o que está sendo capturado.
:::

## Frames de documentos disponíveis

| Frame | Descrição |
|---|---|
| `DocumentEnums.CPF` | Captura o CPF |
| `DocumentEnums.CNH` | Captura a CNH aberta |
| `DocumentEnums.cnhFrente` | Captura a frente da CNH |
| `DocumentEnums.cnhVerso` | Captura o verso da CNH |
| `DocumentEnums.RG` | Captura o RG aberto |
| `DocumentEnums.rgFrente` | Captura a frente do RG |
| `DocumentEnums.rgVerso` | Captura o verso do RG |
| `DocumentEnums.none` | Frame retangular genérico para qualquer outro documento |

:::tip[Frame genérico]
Se você precisar capturar um documento para o qual não há um frame específico (por exemplo, RNE), use `DocumentEnums.none` — um frame genérico e retangular que pode ser utilizado para guiar qualquer captura.
:::

Para a lista completa de tipos de documentos suportados, consulte [Referência de API > Enums](/developers/sdks-and-tools/ios/api-reference/enums).

## Iniciando uma captura de documento

****Passo 2** — Implementar `DocumentCameraDelegate` e `AcessoBioDocumentDelegate`**

Esses delegates gerenciam os callbacks de resultado da captura de documentos:

  | Método | Descrição |
  |---|---|
  | `onSuccessDocument(result)` | Captura bem-sucedida — retorna `DocumentResult` com `base64` (prévia) e `encrypted` (JWT para a API) |
  | `onErrorDocument(errorBio)` | Captura falhou — retorna um `ErrorBio` com código e descrição |

  ### Swift

    ```swift
    class ViewController: UIViewController, AcessoBioManagerDelegate,
      DocumentCameraDelegate, AcessoBioDocumentDelegate {

      func onSuccessDocument(_ result: DocumentResult!) { }
      func onErrorDocument(_ errorBio: ErrorBio!) { }
    }
    ```

### Objective-C

    ```objectivec
    // .h
    @interface ViewController: UIViewController <AcessoBioManagerDelegate,
      DocumentCameraDelegate, AcessoBioDocumentDelegate> {
      AcessoBioManager *unicoCheck;
    }

    // .m
    - (void)onSuccessDocument:(DocumentResult *)result {
        NSLog(@"%@", result.base64);
    }

    - (void)onErrorDocument:(ErrorBio *)errorBio { }
    ```

****Passo 3** — Chamar `prepareDocumentCamera` e `openDocument`**

Chame `prepareDocumentCamera` passando a configuração do SDK. Quando a câmera estiver pronta, `onCameraReadyDocument` é acionado com um `AcessoBioCameraOpenerDelegate` — abra a câmera usando `openDocument()` e passe o `DocumentEnums` desejado:

  - `onCameraReadyDocument(cameraOpener)` — câmera pronta; chame `openDocument(.CNH, delegate: self)`.
  - `onCameraFailedDocument(message)` — a preparação da câmera falhou (`ErrorPrepare` é uma extensão de `ErrorBio`).

  ### Swift

    ```swift
    @IBAction func openCamera(_ sender: Any) {
      unicoCheck.build().prepareDocumentCamera(self, config: YourUnicoConfigClass())
    }

    func onCameraReadyDocument(_ cameraOpener: AcessoBioCameraOpenerDelegate!) {
      cameraOpener.openDocument(DocumentEnums.CNH, delegate: self)
    }

    func onCameraFailedDocument(_ message: ErrorPrepare!) { }
    ```

### Objective-C

    ```objectivec
    - (IBAction)openCamera:(UIButton *)sender {
        [[unicoCheck build] prepareDocumentCamera:self config:[YourUnicoConfigClass new]];
    }

    - (void)onCameraReadyDocument:(id)cameraOpener {
        [cameraOpener openDocument:DocumentCNH delegate:self];
    }

    - (void)onCameraFailedDocument:(ErrorPrepare *)message { }
    ```

Para o tratamento completo do resultado, consulte [Recebendo o resultado](/developers/sdks-and-tools/ios/capture-flow/receiving-the-result).