> For the complete documentation index, see [llms.txt](https://adpopcornssp.gitbook.io/ssp-sdk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adpopcornssp.gitbook.io/ssp-sdk/sdk/android/undefined-1.md).

# 배너 광고

<div><figure><img src="/files/Mf5pALMa42pPJ6gzraRz" alt=""><figcaption><p>320x50</p></figcaption></figure> <figure><img src="/files/6mJhasJbCGG5vPZ2HQg8" alt=""><figcaption><p>320x100</p></figcaption></figure> <figure><img src="/files/4IHqbqdOK4voxBNELZqD" alt=""><figcaption><p>300x250</p></figcaption></figure></div>

## 1. 배너 뷰 인스턴스 생성

배너 view 인스턴스를 생성하는 방식은 xml 방식과 코드 방식 2가지를 지원합니다.

### 1) XML 방식

배너 광고가 노출될 뷰를 사용 중이신 <mark style="color:red;">`Layout.xml`</mark> 파일에 추가합니다.

{% code title="XML" %}

```xml
<LinearLayout 
	android:layout_width="match_parent" 
	android:layout_height="wrap_content" 
	android:background="#ffffff" 
	android:orientation="vertical">	
	<!-- AdPOPcorn SSP Banner View -->			
	<com.igaworks.ssp.part.banner.AdPopcornSSPBannerAd	
		android:layout_width="match_parent"	
		android:layout_height="wrap_content" 
		android:layout_gravity="center_horizontal"	
		android:id="@+id/banner"/>
</LinearLayout>
```

{% endcode %}

xml 에서 형성된 인스턴스를 추가합니다.

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

```java
private AdPopcornSSPBannerAd bannerAd; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
      bannerAd = (AdPopcornSSPBannerAd )findViewById(R.id.banner);
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
var bannerAd : AdPopcornSSPBannerAd? = null

override fun onCreate(savedInstanceState: Bundle?) { 
      bannerAd = findViewById<AdPopcornSSPBannerAd>(R.id.banner)
}
```

{% endtab %}
{% endtabs %}

### 2) 코드 방식

아래 코드를 추가하여 인스턴스를 생성합니다.

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

```java
private AdPopcornSSPBannerAd bannerAd; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
      bannerAd = new AdPopcornSSPBannerAd (context);
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
var bannerAd : AdPopcornSSPBannerAd? = null

override fun onCreate(savedInstanceState: Bundle?) { 
      bannerAd = AdPopcornSSPBannerAd(this@MainActivity)
}
```

{% endtab %}
{% endtabs %}

## 2. 배너 광고 Placement ID 설정

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

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

```java
bannerAd.setPlacementId("배너광고_PLACEMENT_ID");
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.placementId = "배너광고_PLACEMENT_ID"
```

{% endtab %}
{% endtabs %}

## 3. 배너 광고 요청 사이즈 설정

배너 사이즈는 3 가지 옵션으로 <mark style="color:red;">`AdSize enum class`</mark> 로 전달하며 사이즈는 AdSize.BANNER\_320x50 / AdSize.BANNER\_300x250 / AdSize.BANNER\_320x100으로 설정 가능합니다.

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

{% hint style="danger" %}
AdSize.BANNER\_ADAPTIVE\_SIZE의 경우 네이버 애드 매니저 이미지형 배너 전용 사이즈 입니다. 해당 사이즈 사용하고자 하는 경우에는 사업팀(<monetize@adpopcorn.com>)에 문의해 주시기 바랍니다.
{% endhint %}

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

```java
bannerAd.setAdSize(AdSize.BANNER_320x50);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.setAdSize(AdSize.BANNER_320x50)
```

{% endtab %}
{% endtabs %}

## 4. 배너 광고 요청 갱신주기 설정

AdPopcorn 에서 제공하는 배너 광고에 대한 갱신주기를 설정합니다. 설정가능 범위는 15\~300초 사이이며 -1 로 설정 시 자동으로 갱신되지 않습니다.

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

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

```java
bannerAd.setRefreshTime(50);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.setRefreshTime(50)
```

{% endtab %}
{% endtabs %}

## 5. 네트워크 스케쥴 타임아웃 설정

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

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

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

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

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

{% endtab %}

{% tab title="Kotiln" %}

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

{% endtab %}
{% endtabs %}

## 6. 배너 광고 애니메이션

AdPopcornSSP 에서 제공하는 배너 광고는 총 7가지의 애니메이션을 추가할 수 있습니다.

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

<table><thead><tr><th width="388">parameter</th><th>설명</th></tr></thead><tbody><tr><td>BannerAnimType.NONE</td><td>배너 애니메이션 없음</td></tr><tr><td>BannerAnimType.FADE_IN</td><td>페이드 인 애니메이션</td></tr><tr><td>BannerAnimType.SLIDE_LEFT</td><td>왼쪽으로 슬라이드 애니메이션</td></tr><tr><td>BannerAnimType.SLIDE_RIGHT</td><td>오른쪽으로 슬라이드 애니메이션</td></tr><tr><td>BannerAnimType.TOP_SLIDE</td><td>윗쪽으로 슬라이드 애니메이션</td></tr><tr><td>BannerAnimType_BOTTOM_SLIDE</td><td>아래쪽으로 슬라이드 애니메이션</td></tr><tr><td>BannerAnimType_CIRCLE</td><td>배너 회전 애니메이션</td></tr></tbody></table>

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

```java
bannerAd.setBannerAnimType(BannerAnimType.SLIDE_LEFT);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.setBannerAnimType(BannerAnimType.SLIDE_LEFT)
```

{% endtab %}
{% endtabs %}

## 7. 배너 배경색 채우기

AdPopcornSSP 에서 제공하는 배너 광고는 배너 광고가 나오는 뷰의 빈 공간에 배경색을 채울 수 있습니다.&#x20;

{% hint style="info" %}
Default 값은 true (=배경 채우기) 입니다.
{% endhint %}

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

```java
bannerAd.setAutoBgColor(false);  
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.setAutoBgColor(false) 
```

{% endtab %}
{% endtabs %}

## 8. 배너 뷰 광고 요청

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

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

```java
bannerAd.loadAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.loadAd()
```

{% endtab %}
{% endtabs %}

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

## 9. 배너 뷰 광고 중단

배너 광고 노출을 더 이상 하고 싶지 않은 시점에 호출합니다. 일반적으로 배너가 노출된 activity 나 fragment 가 destroy 할 때 호출합니다.

{% hint style="danger" %}
단, onPause 상태 진입 시 stopAd 를 호출할 경우 클릭 리포트 수치가 누락되는 경우가 발생하므로 해당 배너 뷰가 포함된 activity 나 fragment 가 destroy 상태 진입 시에 호출 해주세요.
{% endhint %}

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

```java
bannerAd.stopAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.stopAd()
```

{% endtab %}
{% endtabs %}

## 10. 배너 광고 로드 여부 체크

배너 광고 로드 시 광고 유/무를 파악할때 호출 합니다.&#x20;

* <mark style="color:red;">`true`</mark>: 광고 로드 성공&#x20;
* <mark style="color:blue;">`false`</mark>: 광고 로드 실패

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

```java
bannerAd.isDisplayed();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd.isDisplayed()
```

{% endtab %}
{% endtabs %}

## 11. 이벤트 리스너

배너 광고를 불러올 때 발생하는 이벤트에 대한 리스너를 설정합니다. 제공되는 리스너와 구현 예시는 다음과 같습니다.

| 이벤트 리스너                  | 설명                                                          |
| ------------------------ | ----------------------------------------------------------- |
| OnBannerAdReceiveSuccess | 배너 광고 로딩 성공                                                 |
| OnBannerAdReceiveFailed  | 배너 광고 로딩 실패. [에러코드 값](/ssp-sdk/sdk/android/undefined-10.md) |
| OnBannerAdClicked        | 배너 클릭 시                                                     |

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

```java
bannerAd.setBannerEventCallbackListener(new IBannerEventCallbackListener(){	
    @Override	
    public void OnBannerAdReceiveSuccess() { 
    }	

    @Override	
    public void OnBannerAdReceiveFailed(SSPErrorCode sspErrorCode) { 
    }

    @Override	
    public void OnBannerAdClicked() { 
    }
});
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
bannerAd?.setBannerEventCallbackListener(object: IBannerEventCallbackListener{

    override fun OnBannerAdReceiveSuccess() {
    }

    override fun OnBannerAdReceiveFailed(sspErrorCode: SSPErrorCode) {
    }

    override fun OnBannerAdClicked () {
    }
})
```

{% endtab %}
{% endtabs %}

## 12. 배너 광고 미디에이션 옵션

애드팝콘 SSP 에서 제공하는 Cauly, Mopub, Mezzo Media 에 대한 옵션을 설정 할 수 있습니다.

### Cauly

<table data-full-width="false"><thead><tr><th width="300">option</th><th width="314">설명</th><th>default</th></tr></thead><tbody><tr><td>AdPopcornSSPBannerAd,MediationExtraData.CAULY_DYNAMIC_RELOAD_INTERVAL</td><td>광고 노출 주기를 카울리측에서 컨트롤 함</td><td>true</td></tr><tr><td>AdPopcornSSPBannerAd.MediationExtraData.CAULY_RELOAD_INTERVAL</td><td>광고노출 주기를 매체에서 컨트롤 함 (CAULY_DAYNAMIC_RELOAD_INTERVAL 를 False 로 변경 시 사용 가능)</td><td>20 (설정범위10~120)</td></tr><tr><td>AdPopcornSSPBannerAd.MediationExtraData.CAULY_THREAD_PRIORITY</td><td>스레드 우선순위 설정 </td><td> 5 (설정범위 1~10)</td></tr></tbody></table>

### Mezzo Media

<table data-full-width="false"><thead><tr><th>option</th><th>설명</th></tr></thead><tbody><tr><td>AdPopcornSSPBannerAd.MediationExtraData.MEZZO_STORE_URL</td><td>앱의 Store URL</td></tr><tr><td>AdPopcornSSPBannerAd.MediationExtraData.MEZZO_IS_USED_BACKGROUND_CHECK</td><td>백그라운드에서 배너가 동작할 수 있게 체크 하는 옵션</td></tr><tr><td>AdPopcornSSPBannerAd.MediationExtraData.MEZZO_AGE_LEVEL</td><td>메조 연령 정보를 세팅하는 옵션(기본값은 -1)</td></tr></tbody></table>

{% hint style="warning" %}
메조 가이드에 따르면, 알 수 없음 = -1, 어린이(13세 미만) = 0, 청소년 및 성인(만 13세 이상) = 1로 정의하고 있으니, 매체 측에서 유저의 연령 정보를 알고 계신 경우, <mark style="color:red;">`MEZZO_AGE_LEVEL`</mark> 옵션 값을 설정하시기 바랍니다
{% endhint %}

아래는 옵션 설정 예시 입니다.

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

```java
bannerAd = (AdPopcornSSPBannerAd) findViewById(R.id.banner_container_2);

HashMap bannerMediationExtras = new HashMap<>();
bannerMediationExtras.put(AdPopcornSSPBannerAd.MediationExtraData.CAULY_DYNAMIC_RELOAD_INTERVAL, true);
bannerMediationExtras.put(AdPopcornSSPBannerAd.MediationExtraData.CAULY_RELOAD_INTERVAL, 40);
bannerMediationExtras.put(AdPopcornSSPBannerAd.MediationExtraData.MEZZO_STORE_URL, "");
bannerMediationExtras.put(AdPopcornSSPBannerAd.MediationExtraData.MEZZO_IS_USED_BACKGROUND_CHECK, false);
bannerMediationExtras.put(AdPopcornSSPBannerAd.MediationExtraData.MEZZO_AGE_LEVEL, 1);
bannerAd.setMediationExtras(bannerMediationExtras)
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
var bannerMediationExtras:HashMap<String, Any> = HashMap()
bannerMediationExtras[AdPopcornBannerAd.MediationExtraData.CAULY_DYNAMIC_RELOAD_INTERVAL] = true
bannerMediationExtras[AdPopcornBannerAd.MediationExtraData.CAULY_RELOAD_INTERVAL] = 40
bannerMediationExtras[AdPopcornBannerAd.MediationExtraData.MEZZO_STORE_URL] = ""
bannerMediationExtras[AdPopcornBannerAd.MediationExtraData.MEZZO_IS_USED_BACKGROUND_CHECK] = false
bannerMediationExtras[AdPopcornBannerAd.MediationExtraData.MEZZO_AGE_LEVEL] = 1
bannerAd?.setMediationExtras(bannerMediationExtras)
```

{% endtab %}
{% endtabs %}
