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

# 통합형 네이티브 광고

{% hint style="info" %}
통합형 네이티브 광고는 애드팝콘 v3.10.7 부터 지원되는 타입으로 기존 네이티브 광고와 동일한 기능을 지원하며, 네이티브 레이아웃 구성을 통합하여 지원해, 좀 더 쉽게 레이아웃을 구성할 수 있는 타입입니다.
{% endhint %}

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

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

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

```java
private AdPopcornSSPNativeAdView nativeAd;
     	
@Override
protected void onCreate(Bundle savedInstanceState) {
     // Layout xml 사용할 경우
     nativeAd = (AdPopcornSSPNativeAd) findViewById(R.id.native_ad_view);
}
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
private var nativeAd: AdPopcornSSPNativeAdView? = null
    	
override fun onCreate(savedInstanceState: Bundle?) {
    // Layout xml 사용할 경우
    nativeAd = findViewById(R.id.native_ad_view)
}
```

{% 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/dwkir0IWVZmtTfHkYKV6" %}
[네이티브 레이아웃 가이드](/ssp-sdk/sdk/android/undefined-7/undefined.md)
{% endcontent-ref %}

* 네이티브 동영상

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

## 4. 네이티브 광고 옵션 설정

AdPopcornSSPNativeAdConfig는 네이티브 광고의 미디에이션업체 별 고유 설정을 관리할 때 사용됩니다.&#x20;

{% hint style="info" %}
단, AdFit의 bizboard 옵션은 bizboard 사용 시, 반드시 true로 설정해 사용해 주세요.
{% endhint %}

{% tabs %}
{% tab title="Java" %}
{% code overflow="wrap" %}

```java
AdPopcornSSPNativeAdConfig config = new AdPopcornSSPNativeAdConfig.Builder()                                                                                                                            
          // 공통 옵션                                                                                                                                                                                    
          .privacyIconVisibility(true)                                                                                                                                                                    
          .privacyIconPosition(AdPopcornSSPNativeAdConfig.PrivacyIconPosition.TOP_RIGHT)                                                                                                                  
          // NAM 옵션                                                                                                                                                                                     
          .namTimeoutMillis(30000)                                                                                                                                                                        
          .namAdChoicePosition(1)                                                                                                                                                                         
          // AdFit 옵션                                                                                                                                                                                   
          .adFitBizBoard(true)                                                                                                                                                                            
          .build();                                                                                                                                                                                       
                                                                                                                                                                                                          
  nativeAdView.setNativeAdConfig(config);   
```

{% endcode %}
{% endtab %}

{% tab title="Kotlin" %}
{% code overflow="wrap" %}

```kotlin
val config = AdPopcornSSPNativeAdConfig.Builder()                                                                                                                                                       
      // 공통 옵션                                                                                                                                                                                        
      .privacyIconVisibility(true)                                                                                                                                                                        
      .privacyIconPosition(AdPopcornSSPNativeAdConfig.PrivacyIconPosition.TOP_RIGHT)                                                                                                                      
      // NAM 옵션                                                                                                                                                                                         
      .namTimeoutMillis(30000)                                                                                                                                                                            
      .namAdChoicePosition(1)                                                                                                                                                                             
      // AdFit 옵션                                                                                                                                                                                       
      .adFitBizBoard(true)                                                                                                                                                                                
      .build()                                                                                                                                                                                            
                                                                                                                                                                                                          
  nativeAdView.setNativeAdConfig(config)                                                                                                                                                                    
```

{% endcode %}
{% endtab %}
{% endtabs %}

### 4.1 애드팝콘 (일반 광고)

애드팝콘 템플릿 선택 안 할 경우에 적용 가능한 옵션 값입니다.

<table data-search="false"><thead><tr><th width="221">옵션</th><th width="161">기본값</th><th>설명</th></tr></thead><tbody><tr><td>privacyIconVisibility</td><td>TRUE</td><td>PrivacyIcon 표시 여부</td></tr><tr><td>privacyIconPosition</td><td>TOP_RIGHT</td><td>PrivacyIcon 위치</td></tr><tr><td>privacyIconWidth</td><td>15</td><td>PrivacyIcon 너비 (dp)</td></tr><tr><td>privacyIconHeight</td><td>15</td><td>PrivacyIcon 높이 (dp)</td></tr><tr><td>privacyIconLRMargin</td><td>2</td><td>PrivacyIcon 좌우 마진 (dp)</td></tr><tr><td>privacyIconTBMargin</td><td>2</td><td>PrivacyIcon 상하 마진 (dp)</td></tr><tr><td>privacyIconCornerRadius</td><td>0</td><td>PrivacyIcon 코너 라운드</td></tr></tbody></table>

### 4.2 애드팝콘 (템플릿광고)

애드팝콘 템플릿 선택 했을때 적용 가능한 옵션 값입니다.

<table data-search="false"><thead><tr><th width="291">메서드</th><th width="164">기본값</th><th>설명</th></tr></thead><tbody><tr><td>templateBackgroundColor</td><td>#F8F8F8</td><td>템플릿 배경색</td></tr><tr><td>templatePrivacyIconPosition</td><td>BOTTOM_LEFT</td><td>템플릿 PrivacyIcon 위치</td></tr><tr><td>templatePrivacyIconCornerRadius</td><td>0</td><td>템플릿 PrivacyIcon 코너 라운드</td></tr><tr><td>templateMainImageCornerRadius</td><td>0</td><td>템플릿 메인 이미지 코너 라운드</td></tr><tr><td>templateIconImageCornerRadius</td><td>0</td><td>템플릿 아이콘 이미지 코너 라운드</td></tr><tr><td>templatePrivacyIconLRMargin</td><td>0</td><td>템플릿 PrivacyIcon 좌우 마진</td></tr><tr><td>templatePrivacyIconTBMargin</td><td>0</td><td>템플릿 PrivacyIcon 상하 마진</td></tr></tbody></table>

### 4.2 NAM 전용 옵션

<table><thead><tr><th width="319">메서드</th><th width="153">기본값</th><th>설명</th></tr></thead><tbody><tr><td>namActivateObservingOnBackground</td><td>FALSE</td><td>백그라운드 관찰 활성화</td></tr><tr><td>namEnableMediaBackgroundBlur</td><td>FALSE</td><td>미디어 배경 블러 활성화</td></tr><tr><td>namTimeoutMillis</td><td>60000</td><td>광고 요청 타임아웃 (ms)</td></tr><tr><td>namAdChoicePosition</td><td>1 (TOP_RIGHT)</td><td>AdChoice 위치</td></tr></tbody></table>

namAdChoicePosion은 아래와 같이 정의됩니다.

* 0 : TOP\_LEFT&#x20;
* 1 : TOP\_RIGHT
* 2 : BOTTOM\_LEFT
* 3 : BOTTOM\_RIGHT

### 4.3 AdFit 전용 옵션

<table data-first-column-sticky><thead><tr><th width="263">메서드</th><th>기본값</th><th>설명</th></tr></thead><tbody><tr><td>adFitBizBoard</td><td>FALSE</td><td>BizBoard 광고 사용 여부</td></tr><tr><td>adFitVideoAutoPlayPolicy</td><td>0</td><td>비디오 자동 재생 정책</td></tr></tbody></table>

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

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

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

```java
nativeAd.loadAd();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
nativeAd?.loadAd()
```

{% endtab %}
{% endtabs %}

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

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

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

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

<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 %}

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

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

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

```java
nativeAd.destroy();
```

{% endtab %}

{% tab title="Kotlin" %}

```kotlin
nativeAd?.destroy()
```

{% endtab %}
{% endtabs %}
