---
title: 초기화
canonical: https://developer.unico.io/ko/dual-api/developers/sdks-and-tools/flutter/initialization
locale: ko
generated_by: markdown-export
---

## 초기화 위치

SDK를 **애플리케이션 로드 시** — 일반적으로 `main()` 또는 진입 위젯의 `initState()`에서 초기화합니다. 캡처 버튼 클릭 시 초기화하지 **않아야** 하는 이유는 [모범 사례](/developers/sdks-and-tools/flutter/resources)를 참조하세요.

## 자격 증명 임베딩

Onboarding 팀이 제공한 자격 증명으로 각 플랫폼에 대한 `UnicoConfig` 객체를 인스턴스화합니다:

```dart
final _configIos = UnicoConfig(
    getBundleIdentifier: "Your BundleIdentifier Ios",
    getHostKey: "Your HostKey Ios");

final _configAndroid = UnicoConfig(
    getBundleIdentifier: "Your BundleIdentifier Android",
    getHostKey: "Your HostKey Android");

void initUnicoCamera() {
  // UnicoCheck()는 UnicoCheckBuilder를 반환합니다 — 이를 사용하여 구성을 체이닝하고 build()를 호출하세요
  _unicoCheck = new UnicoCheck(
      listener: this,
      unicoConfigIos: _configIos,
      unicoConfigAndroid: _configAndroid);
}
```

## UnicoListener 구현

위젯 상태 클래스에서 `UnicoListener` 인터페이스를 구현하고 애플리케이션의 비즈니스 로직으로 콜백 메서드를 재정의합니다:

```dart
class _MyHomePageState extends State<MyHomePage> implements UnicoListener {

  late UnicoCheckBuilder _unicoCheck;

  @override
  void onErrorUnico(UnicoError error) {}

  @override
  void onUserClosedCameraManually() {}

  @override
  void onSystemChangedTypeCameraTimeoutFaceInference() {}

  @override
  void onSystemClosedCameraTimeoutSession() {}
}
```

:::warning[필수 리스너 메서드]
위의 네 가지 리스너 메서드는 모두 프로젝트에서 생성되어야 합니다 (로직이 없는 경우에도). 그렇지 않으면 프로젝트가 성공적으로 컴파일되지 않습니다.
:::

## 환경 선택

환경 선택은 초기화 시 이루어집니다. `UnicoEnvironment` 열거형을 사용하세요:

- `UnicoEnvironment.PROD` — 프로덕션 환경
- `UnicoEnvironment.UAT` — UAT 환경

```dart
_unicoCheck.setEnvironment(unicoEnvironment: UnicoEnvironment.UAT);
```

사용 가능한 환경 유형의 전체 목록은 [API Reference > 초기화 API](/developers/sdks-and-tools/flutter/api-reference/initialization-api)를 참조하세요.

## 라이프사이클

백엔드와의 SDK 인증에는 몇 초가 소요됩니다. 사용자가 캡처 버튼을 탭할 때가 아닌 **앱의 콜드 스타트 시** 일찍 초기화하세요 — 그렇지 않으면 탭과 카메라 열림 사이에 지연이 발생합니다.