> 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-8.md).

# 모달 광고

<figure><img src="/files/GoVU1ouS5ADBDCC0VO1q" alt="" width="214"><figcaption></figcaption></figure>

{% hint style="info" %}
모달 광고는 v.3.3.9 버전 부터 지원합니다.
{% endhint %}

## 1. 모달 광고 인스턴스 생성

아래 코드를 추가하여 네이티브 광고 인스턴스를 생성 합니다.

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

```java
public class MainActivity extends Activity{
    private AdPopcornSSPModalAd modalAd;
     	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    	modalAd = new AdPopcornSSPModalAd(this);
    }
}
```

{% endtab %}

{% tab title="Kotlin" %}

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

{% endtab %}
{% endtabs %}

## 2. 모달 광고 Placement ID 설정

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

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

```java
modalAd.setPlacementId("모달_PlacementId");
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd?.setPlacementId("모달PlacementId")
```

{% endtab %}
{% endtabs %}

## 3. 모달 광고 타입 설정

아래 코드를 추가하여 모달 광고의 타입을 설정 합니다.

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

```java
modalAd.setCloseBtnType(AdPopcornSSPModalAd.CloseBtnType.CLOSE_AD);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd?.setCloseBtnType(AdPopcornSSPModalAd.CloseBtnType.CLOSE_AD);
```

{% endtab %}
{% endtabs %}

지원하는 닫기 형태는 2가지로 아래와 같습니다.

<table><thead><tr><th width="277">type</th><th>설명</th></tr></thead><tbody><tr><td>CLOSE_AD</td><td>광고 닫기</td></tr><tr><td>DO_NOT_SHOW_TODAY</td><td>오늘 하루 안보기</td></tr></tbody></table>

## 4. 모달 광고 요청

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

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

```java
modalAd.loadAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd?.loadAd();
```

{% endtab %}
{% endtabs %}

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

## 5. 모달 광고 커스터마이징 옵션

모달 광고 노출 직전에 아래의 설정 변경을 통해 원하는 설정 변경이 가능합니다.

5.1 백그라운드 색상 투명도 변경 (기본 값 : 0.5f)

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

```java
modalAd.setBackgroundAlpha(0.8f);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd.setBackgroundAlpha(0.8f)
```

{% endtab %}
{% endtabs %}

5.2 닫기 버튼 텍스트 색상 변경 (기본 값 : #e9e9e9)

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

```java
modalAd.setCloseTextColor("#ff0000");
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd.setCloseTextColor("#ff0000") 
```

{% endtab %}
{% endtabs %}

5.3 광고 이외의 영역 터치 시 닫기 여부 설정(기본값 : false)

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

```java
modalAd.setEnableDimClose(true);
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
 modalAd.setEnableDimClose(true)   
```

{% endtab %}
{% endtabs %}

## 6. 모달 광고 노출

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

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

```java
modalAd.showAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd?.showAd();
```

{% endtab %}
{% endtabs %}

## 7. 모달 광고 이벤트 리스너

모달 광고에서 발생하는 이벤트를 받고자 할 경우 , 이벤트 리스너를 생성하여 전달해 줍니다.

이벤트 리스너를 통해 들어오는 이벤트들을 아래와 같습니다.

<table><thead><tr><th width="298">이벤트 리스너</th><th>설명</th></tr></thead><tbody><tr><td>OnModalAdLoaded</td><td>모달 광고 요청 성공 시</td></tr><tr><td>OnModalAdLoadFailed</td><td>모달 광고 요청 실패 시. <a href="/pages/8mnPYzYSU61QOImC3VmQ">에러코드 값</a></td></tr><tr><td>OnModalAdOpened</td><td>모달 광고가 화면에 노출되었을 때</td></tr><tr><td>OnModalAdOpenFailed</td><td>모달 광고 화면 노출 실패 시</td></tr><tr><td>OnModalAdClosed</td><td>모달 광고 닫음</td></tr><tr><td>OnModalAdClicked</td><td>모달 광고 클릭</td></tr></tbody></table>

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

```java
modalAd.setModalAdEventCallbackListener(new IModalAdEventCallbackListener() {
    @Override
    public void OnModalAdLoaded() {
        Toast.makeText(MainActivity.this, "OnModalAdLoaded", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void OnModalAdLoadFailed(SSPErrorCode errorCode) {
        Toast.makeText(MainActivity.this, "OnModalAdLoadFailed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void OnModalAdOpened() {
        Toast.makeText(MainActivity.this, "OnModalAdOpened", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void OnModalAdOpenFailed(SSPErrorCode errorCode) {
        Toast.makeText(MainActivity.this, "OnModalAdOpenFailed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void OnModalAdClosed() {
        Toast.makeText(MainActivity.this, "OnModalAdClosed", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void OnModalAdClicked() {
        Toast.makeText(MainActivity.this, "OnModalAdClicked", Toast.LENGTH_SHORT).show();
    }
});
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
modalAd?.setModalAdEventCallbackListener(object: IModalAdEventCallbackListener {
    override fun OnModalAdLoaded() {
    }
    
    override fun OnModalAdLoadFailed(SSPErrorCode errorCode) {
    }
    
    override fun OnModalAdOpened() {
    }
    
    override fun OnModalAdOpenFailed(SSPErrorCode errorCode) {
    }
    
    override fun OnModalAdClosed() {
    }
    
    override fun OnModalAdClicked() {
        
    }
});
```

{% endtab %}
{% endtabs %}
