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

Captura de documentos de identidad. El SDK presenta un marco para ayudar al usuario a posicionar el documento; una vez posicionado, el usuario hace clic en el botón para capturar la foto.

:::warning[Sin validación de contenido]
El SDK no realiza ningún tipo de validación sobre lo que se está capturando.
:::

## Marcos de documento disponibles

| Marco | Descripción |
|---|---|
| `DocumentEnums.CPF` | Captura el CPF |
| `DocumentEnums.CNH` | Captura la CNH abierta |
| `DocumentEnums.cnhFrente` | Captura el frente de la CNH |
| `DocumentEnums.cnhVerso` | Captura el dorso de la CNH |
| `DocumentEnums.RG` | Captura el RG abierto |
| `DocumentEnums.rgFrente` | Captura el frente del RG |
| `DocumentEnums.rgVerso` | Captura el dorso del RG |
| `DocumentEnums.none` | Marco rectangular genérico para cualquier otro documento |

:::tip[Marco genérico]
Si necesita capturar un documento para el que no existe un marco específico (por ejemplo, RNE), use `DocumentEnums.none` — un marco genérico y rectangular que puede utilizarse para guiar cualquier captura.
:::

Para la lista completa de tipos de documentos soportados, consulte [Referencia de API > Enumeraciones](/developers/sdks-and-tools/ios/api-reference/enums).

## Iniciar una captura de documento

****Paso 2** — Implementar `DocumentCameraDelegate` y `AcessoBioDocumentDelegate`**

Estos delegates gestionan los callbacks del resultado de la captura de documentos:

  | Método | Descripción |
  |---|---|
  | `onSuccessDocument(result)` | Captura exitosa — devuelve `DocumentResult` con `base64` (vista previa) y `encrypted` (JWT para la API) |
  | `onErrorDocument(errorBio)` | Captura fallida — devuelve un `ErrorBio` con código y descripción |

  ### 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 { }
    ```

****Paso 3** — Llamar a `prepareDocumentCamera` y `openDocument`**

Llame a `prepareDocumentCamera` pasando la configuración del SDK. Cuando la cámara esté lista, se activará `onCameraReadyDocument` con un `AcessoBioCameraOpenerDelegate` — abra la cámara usando `openDocument()` y pase el `DocumentEnums` deseado:

  - `onCameraReadyDocument(cameraOpener)` — la cámara está lista; llame a `openDocument(.CNH, delegate: self)`.
  - `onCameraFailedDocument(message)` — la preparación de la cámara falló (`ErrorPrepare` es una extensión 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 el manejo completo del resultado, consulte [Recibir el resultado](/developers/sdks-and-tools/ios/capture-flow/receiving-the-result).