---
description: 네이티브 광고는 광고가 게재되는 사용자 환경의 형식 및 기능에 맞춰 자동으로 최적화되어 출력됩니다.
---

# 네이티브 광고



## 1. 네이티브 광고 인스턴스 생성

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

{% tabs %}
{% tab title="JAVA" %}
```java
private AdPopcornSSPNativeAd nativeAd;
     	
@Override
protected void onCreate(Bundle savedInstanceState) {
     // Layout xml 사용할 경우
     nativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.igaw_native_ad);
}
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
private var nativeAd: AdPopcornSSPNativeAd? = null
    	
override fun onCreate(savedInstanceState: Bundle?) {
    // Layout xml 사용할 경우
    nativeAd = findViewById(R.id.adpopcorn_native_ad)
}
```
{% endtab %}
{% endtabs %}



## 2. 네이티브 광고 Placement ID 설정

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

{% tabs %}
{% tab title="JAVA" %}
```java
nativeAd.setPlacementId("네이티브_PlacementId");
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
nativeAd?.setPlacementId("네이티브 PlacementId")
```
{% endtab %}
{% endtabs %}



## 3. 네이티브 레이아웃 구성

네이티브 레이아웃의 구성은 아래 상세 가이드를 통해 확인하시기 바랍니다.

[\[ 네이티브 광고 레이아웃 구성 가이드\]](undefined-6/undefined)

{% hint style="warning" %}
애드팝콘 `SSP v2.4.6` 버전부터는 Admob v20.1.0 과 호환성을 유지하기 위해 애드몹, GAM native 레이아웃을 구성하는 일부 class의 경로가 변경되었습니다. 이에 아래 사항 확인 후, 반드시 변경해 주시기 바랍니다.
{% endhint %}

```
## Admob, GAM 변경 사항>

com.google.android.gms.ads.formats.UnifiedNativeAdView 
→ com.google.android.gms.ads.nativead.NativeAdView

com.google.android.gms.ads.formats.MediaView 
→ com.google.android.gms.ads.nativead.MediaView
```

{% hint style="warning" %}
애드팝콘 `SSP v3.0.3` 버전부터는 Mintegral SDK v15.7.41 과 호환성을 유지하기 위해 Mintegral native 레이아웃을 구성하는 일부 class의 경로가 변경되었습니다. 이에 아래 사항 확인 후, 반드시 변경해 주시기 바랍니다.
{% endhint %}

```
## Mintegral 변경 사항>

com.mintegral.msdk.widget.MTGAdChoice 
→ com.mbridge.msdk.widget.MBAdChoice
```



## 4. 네이티브 광고 요청

네이티브 광고 영역에 광고를 로드 할 경우, <mark style="color:red;">`loadAd()`</mark> API를 추가하여 광고를 요청 합니다. 광고가 정상적으로 수신 시, 아래 layout 형태로 광고가 노출 됩니다. (igaw\_native\_ad\_layout\_template.xml 사용 시)

{% tabs %}
{% tab title="JAVA" %}
```java
nativeAd.loadAd();
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
nativeAd?.loadAd()
```
{% endtab %}
{% endtabs %}

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

<figure><img src="https://50533756-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fqmkw7pJLtjFGD5fwChbN%2Fuploads%2FiyfgjyhK2t2zlJNTW7OJ%2Fimage.png?alt=media&#x26;token=d9dcdd03-3c96-4a9d-b5b7-263df694179b" alt="" width="563"><figcaption><p>네이티브 광고 예시 이미지</p></figcaption></figure>



## 5. 네이티브 광고 이벤트 리스너

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

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

<table><thead><tr><th width="264">이벤트 리스너</th><th>설명</th></tr></thead><tbody><tr><td>onNativeAdLoadSuccess</td><td>네이티브 광고 요청 성공 시</td></tr><tr><td>onNativeAdLoadFailed</td><td>네이티브 광고 요청 실패 시. <a href="undefined-10">에러코드 값</a></td></tr><tr><td>onImpression</td><td>네이티브 광고가 화면에 노출되었을 때</td></tr><tr><td>onClicked</td><td>네이티브 광고를 클릭 했을 때</td></tr><tr><td>onAdHidden</td><td>네이티브 광고를 닫았을 경우(NAM 미디에이션 광고일 경우에만 발생)</td></tr></tbody></table>

{% tabs %}
{% tab title="JAVA" %}
```java
nativeAd.setNativeAdEventCallbackListener (new INativeAdEventCallbackListener () {
    @Override
    public void onNativeAdLoadSuccess () {
    }

    @Override
    public void onNativeAdLoadFailed (SSPErrorCode errorCode) {
    }

    @Override
    public void onImpression() {
    }

    @Override
    public void onClicked() {
    }

    @Override
    public void onAdHidden() {
    }
});
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
nativeAd?.setNativeAdEventCallbackListener (object: INativeAdEventCallbackListener {
    override fun onNativeAdLoadSuccess () {
    }

    override fun onNativeAdLoadFailed (errorCode: SSPErrorCode) {
    }

    override fun onImpression () {
    }

    override fun onClicked () {
    }

    override fun onAdHidden () {
    }
})
```
{% endtab %}
{% endtabs %}



## 6. 네이티브 광고 종료

네이티브 광고 인스턴스를 더 이상 사용하지 않을 경우 , <mark style="color:red;">`destroy API`</mark>를 호출 하여 메모리 정리를 진행 합니다.

{% tabs %}
{% tab title="JAVA" %}
```java
nativeAd.destroy();
```
{% endtab %}

{% tab title="Kotlin" %}
```kotlin
nativeAd?.destroy()
```
{% endtab %}
{% endtabs %}

