---
title: 初始化
canonical: https://developer.unico.io/zh-CN/dual-api/developers/sdks-and-tools/ios/initialization
locale: zh-CN
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，并在您要使用的 `ViewController` 中实现 `AcessoBioManagerDelegate` 接口。实例化 *builder*，提供 *context*，并使用应用程序的业务逻辑覆盖回调方法：

### 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[必须实现的委托方法]
上述四个委托方法必须在您的项目中创建（即使没有任何逻辑）。否则，项目将无法成功编译。
:::

## 环境选择

环境的选择在初始化时进行。使用 `EnvironmentEnum` 类型：

- `EnvironmentEnum.PROD` — 生产环境
- `EnvironmentEnum.UAT` — UAT 环境

### Swift

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

### Objective-C

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

有关所有可用环境类型的完整列表，请参阅 [API 参考 > 初始化 API](/developers/sdks-and-tools/ios/api-reference/initialization-api)。

## 生命周期

SDK 与后端的身份验证需要几秒钟时间。**请尽早初始化**（应用程序冷启动时），而不是在用户点击采集按钮时——否则用户在点击与摄像头打开之间会感受到延迟。