---
title: Захват документов
canonical: https://developer.unico.io/ru/dual-api/developer/sdks-and-tools/ios-sdk/document-capture/
locale: ru
generated_by: markdown-export
---

Захват документов, удостоверяющих личность. SDK отображает рамку, помогающую пользователю расположить документ; после позиционирования пользователь нажимает кнопку для съёмки фото.

:::warning[Без проверки содержимого]
SDK не выполняет никакой проверки того, что захватывается.
:::

## Доступные рамки для документов

| Рамка | Описание |
|---|---|
| `DocumentEnums.CPF` | Захват CPF |
| `DocumentEnums.CNH` | Захват открытого CNH |
| `DocumentEnums.cnhFrente` | Захват лицевой стороны CNH |
| `DocumentEnums.cnhVerso` | Захват обратной стороны CNH |
| `DocumentEnums.RG` | Захват открытого RG |
| `DocumentEnums.rgFrente` | Захват лицевой стороны RG |
| `DocumentEnums.rgVerso` | Захват обратной стороны RG |
| `DocumentEnums.none` | Универсальная прямоугольная рамка для любого другого документа |

:::tip[Универсальная рамка]
Если вам нужно захватить документ, для которого нет специальной рамки (например, RNE), используйте `DocumentEnums.none` — универсальная прямоугольная рамка, подходящая для любого захвата.
:::

Полный список поддерживаемых типов документов см. в разделе [Справочник API > Перечисления](/developers/sdks-and-tools/ios/api-reference/enums).

## Начало захвата документа

****Шаг 2** — Реализуйте `DocumentCameraDelegate` и `AcessoBioDocumentDelegate`**

Эти делегаты обрабатывают обратные вызовы результата захвата документа:

  | Метод | Описание |
  |---|---|
  | `onSuccessDocument(result)` | Захват выполнен успешно — возвращает `DocumentResult` с `base64` (предпросмотр) и `encrypted` (JWT для API) |
  | `onErrorDocument(errorBio)` | Захват не выполнен — возвращает `ErrorBio` с кодом и описанием |

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

****Шаг 3** — Вызовите `prepareDocumentCamera` и `openDocument`**

Вызовите `prepareDocumentCamera`, передав конфигурацию SDK. Когда камера будет готова, сработает `onCameraReadyDocument` с `AcessoBioCameraOpenerDelegate` — откройте камеру с помощью `openDocument()` и передайте желаемый `DocumentEnums`:

  - `onCameraReadyDocument(cameraOpener)` — камера готова; вызовите `openDocument(.CNH, delegate: self)`.
  - `onCameraFailedDocument(message)` — подготовка камеры завершилась ошибкой (`ErrorPrepare` является расширением `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 { }
    ```

Полную информацию об обработке результата см. в разделе [Получение результата](/developers/sdks-and-tools/ios/capture-flow/receiving-the-result).