# 네이티브 광고

## 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. 네이티브 레이아웃 구성

애드팝콘에서는 일반 네이티브와 네이티브 동영상을 지원합니다. 원하는 타입에 맞추어 레이아웃을 구성해 주세요.

* 일반 네이티브

{% content-ref url="/pages/2fdfjqGM4msehqED341I" %}
[네이티브 레이아웃 가이드](/ssp-sdk/sdk/android/undefined-6/undefined.md)
{% endcontent-ref %}

* 네이티브 동영상

{% content-ref url="/pages/5QYSk6vmJI4Xx2WVRkLI" %}
[네이티브 동영상 레이아웃 가이드](/ssp-sdk/sdk/android/undefined-6/undefined-1.md)
{% endcontent-ref %}

## 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="/files/uoGbEQEoIHsaNOpg6B8t" 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="/pages/8mnPYzYSU61QOImC3VmQ">에러코드 값</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 %}


---

# 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-6.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.
