---
title: Инициализация
canonical: https://developer.unico.io/ru/dual-api/developers/sdks-and-tools/ios/initialization
locale: ru
generated_by: markdown-export
---

## Встраивание учётных данных

Реализуйте протокол `AcessoBioConfigDataSource` в вашем классе:

### Swift

  ```swift title="UnicoConfig.swift"
  import AcessoBio

  class YourUnicoConfigClass: AcessoBioConfigDataSource {
    func getBundleIdentifier() -> String {
      return "<YOUR_MOBILE_BUNDLE_IDENTIFIER>"
    }

    func getHostKey() -> String {
      return "<YOUR_SDK_KEY>"
    }
  }
  ```

### Objective-C

  ```objectivec title="UnicoConfig.h / UnicoConfig.m"
  // .h
  #import <AcessoBio/AcessoBioManager.h>
  #import <AcessoBio/AcessoBio-Swift.h>

  @interface YourUnicoConfigClass : NSObject <AcessoBioConfigDataSource>
  @end

  // .m
  @implementation YourUnicoConfigClass

  - (NSString * _Nonnull)getBundleIdentifier {
      return @"<YOUR_MOBILE_BUNDLE_IDENTIFIER>";
  }

  - (NSString * _Nonnull)getHostKey {
      return @"<YOUR_SDK_KEY>";
  }

  @end
  ```

## Где инициализировать

Инициализируйте SDK при **загрузке приложения** — как правило, в `application(_:didFinishLaunchingWithOptions:)` вашего `AppDelegate` или в `viewDidLoad` вашего входного `ViewController`. Подробную информацию о том, почему **не следует** инициализировать при нажатии кнопки захвата, см. в разделе [Лучшие практики](/developers/sdks-and-tools/ios/resources).

## Создание экземпляра менеджера

Импортируйте SDK и реализуйте интерфейс `AcessoBioManagerDelegate` внутри `ViewController`, который вы хотите использовать. Создайте экземпляр *строителя*, передав *контекст*, и переопределите методы обратного вызова с бизнес-логикой вашего приложения:

### Swift

  ```swift title="ViewController.swift"
  import UIKit
  import AcessoBio

  class ViewController: UIViewController, AcessoBioManagerDelegate {
    var unicoCheck: AcessoBioManager!

    override func viewDidLoad() {
      super.viewDidLoad()
      unicoCheck = AcessoBioManager(viewController: self)
    }

    func onErrorAcessoBioManager(_ error: ErrorBio!) { }
    func onUserClosedCameraManually() { }
    func onSystemClosedCameraTimeoutSession() { }
    func onSystemChangedTypeCameraTimeoutFaceInference() { }
  }
  ```

### Objective-C

  ```objectivec title="ViewController.m"
  #import "ViewController.h"
  #import <AcessoBio/AcessoBio.h>

  @implementation ViewController: UIViewController
  - (void)viewDidLoad {
      [super viewDidLoad];
      unicoCheck = [[AcessoBioManager alloc]initWithViewController:self];
  }

  - (void)onErrorAcessoBioManager:(ErrorBio *)error { }
  - (void)onSystemChangedTypeCameraTimeoutFaceInference { }
  - (void)onSystemClosedCameraTimeoutSession { }
  - (void)onUserClosedCameraManually { }
  @end
  ```

:::danger[Обязательные методы делегата]
Все четыре метода делегата, перечисленные выше, должны быть созданы в вашем проекте (даже без какой-либо логики). В противном случае проект не скомпилируется успешно.
:::

## Выбор среды

Выбор между **sandbox** и **production** осуществляется во время инициализации. Используйте тип `EnvironmentEnum`:

- `EnvironmentEnum.PROD` — производственная среда
- `EnvironmentEnum.UAT` — среда тестирования

### Swift

  ```swift
  unicoCheck.setEnvironment(.UAT)
  ```

### Objective-C

  ```objectivec
  [unicoCheck setEnvironment:UAT];
  ```

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

## Жизненный цикл

Аутентификация SDK с бэкендом занимает несколько секунд. **Инициализируйте заранее** (при холодном запуске приложения), а не тогда, когда пользователь нажимает кнопку захвата — иначе пользователь столкнётся с задержкой между нажатием и открытием камеры.