# 리워드 비디오 광고

## 1. 리워드 광고 인스턴스 설정

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

{% tabs %}
{% tab title="JAVA" %}

```java
private AdPopcornSSPRewardVideoAd rewardVideoAd;
     	
@Override
protected void onCreate(Bundle savedInstanceState) {
     rewardVideoAd= new AdPopcornSSPRewardVideoAd(context);
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
private var rewardVideoAd: AdPopcornSSPRewardVideoAd? = null
     	
override fun onCreate(savedInstanceState: Bundle?){
     rewardVideoAd=  AdPopcornSSPRewardVideoAd(this@MainActivity)
}
```

{% endtab %}
{% endtabs %}

## 2. 리워드 비디오 광고 Placement ID 설정

아래 코드를 추가하여 리워드 비디오 광고  PLACEMENT ID 를 설정합니다. 리워드 비디오 광고 PLACEMENT ID 는 [애드팝콘 SSP 콘솔](https://www.console.adpopcorn.com/)에서 생성이 가능합니다.

{% tabs %}
{% tab title="JAVA" %}

```java
rewardVideoAd.setPlacementId("리워드광고_PlacementId");
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
rewardVideoAd?.placementId = "리워드광고_PlacementId"
```

{% endtab %}
{% endtabs %}

## 3. 네트워크 스케쥴 타임아웃 설정&#x20;

AdPopcornSSP 에서 제공하는 리워드 비디오 광고에 대한 네트워크 스케쥴 타임아웃을 설정합니다.

리워드 비디오 광고 로딩 시 각 네트워크 별로 타임아웃 시간을 주어 해당 시간 안에 광고를 받지 못할 경우 , 다음 네트워크로 넘어가게 됩니다.

{% hint style="info" %}
Default 값은 10초 입니다.
{% endhint %}

{% tabs %}
{% tab title="JAVA" %}

```java
rewardVideoAd.setNetworkScheduleTimeout(10);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
rewardVideoAd?.setNetworkScheduleTimeout(10)
```

{% endtab %}
{% endtabs %}

## 4. 리워드 비디오 광고 요청

리워드 광고 노출을 원하는 시점에 <mark style="color:red;">`loadAd()`</mark>API를 호출하여 서버에 광고를 요청 합니다.

{% hint style="warning" %}
loadAd 호출에 대한 결과로 광고 수신에 실패한 경우에는 loadAd 재호출을 하시면 안됩니다. 과도한 광고 요청 api 호출은 block 사유가 됩니다.
{% endhint %}

{% tabs %}
{% tab title="JAVA" %}

```java
rewardVideoAd.loadAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
rewardVideoAd?.loadAd()
```

{% endtab %}
{% endtabs %}

## 5. 리워드 비디오 광고 노출

리워드 광고 노출 시점에 <mark style="color:red;">`showAd()`</mark> API를 추가하여 광고를 재생 합니다.

{% tabs %}
{% tab title="JAVA" %}

```java
rewardVideoAd.showAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kts
rewardVideoAd?.showAd()
```

{% endtab %}
{% endtabs %}

## 6. 리워드 비디오 광고 이벤트 리스너

리워드 광고에서 발생하는 이벤트에 대한 리스너를 설정 합니다. 제공되는 이벤트 리스너와 구현 예시는 아래와 같습니다.

<table><thead><tr><th width="467">이벤트 리스너</th><th>설명</th></tr></thead><tbody><tr><td>OnRewardVideoAdLoaded()</td><td>비디오 광고 로딩 성공</td></tr><tr><td>OnRewardVideoAdLoadFailed(SSPErrorCode errorCode)</td><td>비디오 광고 로딩 실패. <a href="undefined-9">에러코드 값</a></td></tr><tr><td>OnRewardVideoAdOpened()</td><td>비디오 광고 노출 성공</td></tr><tr><td>OnRewardVideoAdOpenFalied()</td><td>비디오 광고 노출 실패</td></tr><tr><td>OnRewardVideoAdClosed()</td><td>비디오 광고 닫기</td></tr><tr><td>OnRewardVideoPlayCompleted(<code>int</code> adNetworkNo, <code>boolean</code> completed)</td><td>비디오 광고 재생 완료</td></tr><tr><td>  ㄴ adNetworkNo</td><td>완료된 미디에이션</td></tr><tr><td>  ㄴ completed</td><td>비디오 시청 정상 완료 여부</td></tr><tr><td>OnRewardVideoAdClicked()</td><td>비디오 광고 클릭(일부 미디에이션 광고는 지원 하지 않음)</td></tr><tr><td>OnRewardPlusCompleted(boolean result, int resultCode, int reward)</td><td>리워드 플러스 활성화 된 유저의 경우 포인트 적립 요청 결과를 전달</td></tr><tr><td>  ㄴ result</td><td>적립 요청 결과</td></tr><tr><td>  ㄴ resultCode</td><td>적립 요청 결과 코드</td></tr><tr><td>  ㄴ reward</td><td>적립 요청된 리워드</td></tr></tbody></table>

{% tabs %}
{% tab title="JAVA" %}

```java
rewardVideoAd.setRewardVideoAdEventCallbackListener(new IRewardVideoAdEventCallbackListener() { 
	
	@Override 
	public void OnRewardVideoAdLoaded() { 
	} 

	@Override 
	public void OnRewardVideoAdLoadFailed(SSPErrorCode errorCode) { 
	} 

	@Override 
	public void OnRewardVideoAdOpened() { 
	} 

	@Override 
	public void OnRewardVideoAdOpenFalied() { 
	} 

	@Override 
	public void OnRewardVideoAdClosed() { 
	} 

	@Override 
	public void OnRewardVideoPlayCompleted(int adNetworkNo, boolean completed) { 
	}
 
	@Override 
	public void OnRewardVideoAdClicked() { 
	}
	
	@Override 
	public void OnRewardPlusCompleted(boolean result, int resultCode, int reward) { 
	}
});
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
rewardVideoAd?.setRewardVideoAdEventCallbackListener(object: IRewardVideoAdEventCallbackListener{
    override fun OnRewardVideoAdLoaded() {
    }

    override fun OnRewardVideoPlayCompleted(adNetworkNo: Int, completed: Boolean) {
    }

    override fun OnRewardVideoAdClosed() {
    }

    override fun OnRewardVideoAdOpened() {
    }

    override fun OnRewardVideoAdLoadFailed(sspErrorCode: SSPErrorCode?) {
    }

    override fun OnRewardVideoAdOpenFalied() {
    }
    
    override fun OnRewardPlusCompleted(result: Boolean, resultCode: Int, reward: Int) {
    }
    
    override fun OnRewardVideoAdClicked() {
    }
})
```

{% endtab %}
{% endtabs %}

## 7. 유저 식별값 입력

유저 식별값은 리워드 비디오 시청 완료 시 완료 유저를 식별하기 위해 사용되는 값입니다.

해당 유저 정보를 넘겨주어야 CS 접수 시, 유저를 특정 가능합니다. 단, CS 기능을 오픈하지 않을 경우에는 연동 진행하지 않아도 됩니다.

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

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

위 주의사항에 유의하여 유저 식별값을 입력합니다.

{% tabs %}
{% tab title="JAVA" %}

```java
AdPopcornSSP.setUserId(context,"bXlBY2NvdW50X25hbWU=");
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
AdPopcornSSP.setUserId(context,"bXlBY2NvdW50X25hbWU=")
```

{% endtab %}
{% endtabs %}

## 8. 리워드 비디오 광고 CS 페이지 호출

리워드 비디오 관련 CS 접수 페이지를 노출 시키기 위해서는 <mark style="color:red;">`openRewardVideoCSPage()`</mark> API를 호출하여 줍니다.

단, 반드시 Activity context를 넘겨주어야 정상적으로 페이지가 노출 됩니다.

{% tabs %}
{% tab title="JAVA" %}

```java
AdPopcornSSP.openRewardVideoCSPage(Activity activity, string usn)
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
AdPopcornSSP.openRewardVideoCSPage(this@MainActivity, "usn")
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://adpopcornssp.gitbook.io/ssp-sdk/sdk/android/undefined-4.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
