> For the complete documentation index, see [llms.txt](https://one-admax-organization.gitbook.io/one-admax-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://one-admax-organization.gitbook.io/one-admax-sdk/05.-flutter-plugin-guide/5-1.-for-flutter.md).

# 5-1. 보상형 비디오 광고 for Flutter

비디오 광고 시청 완료 시, 유저에게 리워드가 지급되는 광고 타입 입니다.

## 사전 작업

{% content-ref url="/pages/HIpQCyVR8FOQSoTDab0B" %}
[05. Flutter-Plugin Guide](/one-admax-sdk/05.-flutter-plugin-guide.md)
{% endcontent-ref %}

## 유저 식별값  설정

보상형 비디오 시청 완료 시 리워드 지급 유저를 식별하기 위해 사용됩니다.

```java
 ONEAdMax.setUserId(userId);
```

{% hint style="warning" %}

#### 꼭! 확인해주세요!

1. 1명의 유저는 가변적인 값이 아닌 1개의 고유한 유저식별값을 가져야 합니다.&#x20;
2. 개인정보( 이메일, 이름, 전화번호, 식별 가능한 유저 아이디 등 )가 포함되어서는 안됩니다.
3. 한글, 특수문자, 공백 등이 포함된 경우에는 반드시 URL 인코딩 처리를 하여 사용하여야 합니다.
4. 유저가 광고에 진입하기 전에 설정되어야 합니다.
   {% endhint %}

## 보상형 비디오 광고 인스턴스 생성 <a href="#id-01.sdk" id="id-01.sdk"></a>

아래 코드를 추가하여 보상형 비디오 광고 인스턴스를 생성합니다.

```java
_oamReward = OAMReward()
```

## **보상형 비디오 광고 요청** <a href="#id-01.sdk-2" id="id-01.sdk-2"></a>

보상형 비디오 광고의 `load()`를 요청합니다.\
매개변수로는 `placementId`와 `networkTimeout`, `RewardCallBackListener`을 받습니다.

[보상형 비디오 광고의 `placementId`는 ONE AdMax 콘솔에서 생성이 가능합니다.](/one-admax-sdk/02..md)

```dart
_oamReward.load(
  placementId: rewardPlacementId,
);
```

{% hint style="warning" %}
과도한 광고 요청은 차단 사유가 되니 주의해주세요!
{% endhint %}

## **보상형 비디오 광고 네트워크 스케줄 타임아웃** <a href="#id-01.sdk-1" id="id-01.sdk-1"></a>

보상형 비디오 광고에 대한 네트워크 스케줄 타임아웃을 설정합니다.

보상형 비디오 광고 로딩 시 각 네트워크( 미디에이션 업체 )별로 타임아웃 시간을 주어 해당 시간 안에 광고를 받지 못할 경우, 다음 네트워크로 넘어가게 됩니다.

```java
_oamReward.load(
  networkTimeout: 10
)
```

#### **보상형 비디오 광고 이벤트 리스너** <a href="#id-01.sdk-4" id="id-01.sdk-4"></a>

보상형 비디오 광고를 불러올 때 발생하는 이벤트에 대한 리스너를 설정합니다.&#x20;

```java
_oamReward.load(
  callback: RewardCallBackListener(
    onLoaded: onLoaded,
    onLoadFailed: onLoadFailed,
    onOpened: onOpened,
    onOpenFailed: onOpenFailed,
    onClosed: onClosed,
    onCompleted: onCompleted,
    onClicked: onClicked,
  )
)
```

{% content-ref url="/pages/i8O1iX5eJtrY4LjZBdFC" %}
[ONE AdMax SDK Error Codes](/one-admax-sdk/oamerror.md)
{% endcontent-ref %}

### **CS 페이지 호출** <a href="#id-01.sdk-cs" id="id-01.sdk-cs"></a>

보상형 비디오 관련 CS 접수 페이지를 노출시키는 API 입니다.

```java
ONEAdMax.openRewardVideoCSPage(userId)
```

### 어플리케이션의 라이프사이클 확장하기 <a href="#undefined-1" id="undefined-1"></a>

보상형 비디오 광고가 노출되고 있는 어플리케이션의 `onPause` / `onResume`여부를 체크하기 위해 구현해야 합니다.

```java
  @override
  void didChangeAppLifecycleState(AppLifecycleState state) {
    switch (state) {
      case AppLifecycleState.resumed:
        debugPrint("resumed");
        _oamReward.resume()
        break;
      case AppLifecycleState.paused:
        _oamReward.pause();
        break;
    }
    super.didChangeAppLifecycleState(state);
  }
```

{% hint style="warning" %}
**주의사항**

미 처리시, third-party mediation을 사용에서 리포트 수치가 누락되는 경우가 발생합니다.
{% endhint %}

### 보상형 비디오 광고 메모리 해지하기 <a href="#undefined-2" id="undefined-2"></a>

보상형 광고의 인스턴스 내의 메모리를 해지합니다.

```java
 @override
void dispose() {
  _oamReward.dispose();
}
```

### 보상형 비디오 광고 샘플 코드 <a href="#id-01.sdk-6" id="id-01.sdk-6"></a>

보상형 광고 사용에 관련된 샘플 코드 입니다.

```java
_oamReward = OAMReward()

_oamReward.load(
  placementId: rewardPlacementId,
  callback: RewardCallBackListener(
    onLoaded: onLoaded,
    onLoadFailed: onLoadFailed,
    onOpened: onOpened,
    onOpenFailed: onOpenFailed,
    onClosed: onClosed,
    onCompleted: onCompleted,
    onClicked: onClicked,
  ),
);

_oamReward.show();

@override
void didChangeAppLifecycleState(AppLifecycleState state) {
  switch (state) {
    case AppLifecycleState.resumed:
        _oamReward.resume()
        break;
    case AppLifecycleState.paused:
        _oamReward.pause();
        break;
  }
  super.didChangeAppLifecycleState(state);
}

@override
void dispose() {
  _oamReward.dispose();
  super.dispose();
}
```

### 미디에이션 설정 <a href="#id-01.sdk-7" id="id-01.sdk-7"></a>

안정적인 Fill-rate 및 eCPM을  위해 AppLovin, Unityads, Vungle의 미디에이션 작업을  추천합니다.

{% content-ref url="/pages/4qn0DUhnsshEsiXcSFJs" %}
[미디에이션 시작하기](/one-admax-sdk/sdk.md)
{% endcontent-ref %}
