> 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/unity/unity-android/undefined-2.md).

# 네이티브 광고

{% hint style="info" %}
Unity에서의 네이티브 광고의 경우 매체측에서 네이티브 요청 성공 시에 받은 NativeData(총 8가지 정보를 제공)를 가지고 직접 UI에 Display 해주어야 합니다.(Delegate 설정 참고)
{% endhint %}

{% hint style="info" %}
Unity에서는 광고 노출 시점과 광고 클릭 시점에 매체측에서 직접 리포트 수집을 위한 API를 호출해 주어야합니다.(reportImpression, reportClick)
{% endhint %}

## 1. 인스턴스 생성

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

{% code title="C#" %}

```csharp
public class AdPopcornSSPSampleScene : MonoBehaviour{
private AdPopcornSSPNative = null;
	
void Start(){
	nativeAd = new AdPopcornSSPNative();
}

```

{% endcode %}

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

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

{% code title="C#" %}

```csharp
nativeAd.setPlacementId(“네이티브PlacementId”);
```

{% endcode %}

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

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

{% code title="C#" %}

```csharp
nativeAd.loadAd();
```

{% endcode %}

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

## 4. 네이티브 광고 델리게이트 설정

네이티브 광고 요청에 대한 성공 , 실패 델리게이트를 제공 합니다. 제공되는 델리게이트와 구현 예시는 다음과 같습니다.

{% code title="C#" %}

```csharp
nativeAd.setNativeEventCallbackListener();
```

{% endcode %}

<table><thead><tr><th width="324">delegate</th><th>설명</th></tr></thead><tbody><tr><td>OnNativeAdLoadSuccess(object sender, NativeData nativeData)</td><td>네이티브 광고 로딩 성공</td></tr><tr><td>OnNativeAdLoadFailed(object sender, ErrorResult errorResult)</td><td>네이티브 광고 로딩 실패. <a href="/pages/w3pHgALGS9KiJjyi0zt2">에러코드 값</a></td></tr></tbody></table>

{% code title="C#" %}

```csharp
//네이티브 델리게이트 등록

void Start()
{	
	if(nativeAd!= null)	
	{ 
		nativeAd.setNativeEventCallbackListener();
		nativeAd.OnNativeAdLoadSuccess += OnNativeAdLoadSuccess;	
		nativeAd.OnNativeAdLoadFailed += OnNativeAdLoadFailed;	
	}
}

//네이티브 델리게이트 구현
public void OnNativeAdLoadSuccess(object sender, NativeData nativeData)
{
    Debug.Log("OnNativeAdLoadSuccess event received");
	// 타이틀 : nativeData.title
	// 설명 : nativeData.desc
	// 아이콘 이미지 URL : nativeData.iconImgURL
	// 메인 이미지 URL : nativeData.mainImgURL
	// 액션 버튼 : nativeData.cta
	// 랜딩 URL : nativeData.landingURL
	// 개인정보 취급 방침 아이콘 URL : nativeData.privacyIconImgURL
	// 개인정보 아이콘 클릭 시, 랜딩 URL : nativeData.privacyPolicyURL
}

public void OnNativeAdLoadFailed(object sender, ErrorResult errorResult)
{
    Debug.Log("OnNativeAdLoadFailed event received. > errorCode : " + errorResult.errorCode + ", erroMessage : " + errorResult.errorMessage);
}


//네이티브 델리게이트 해제
void OnDestroy(){	
	if(nativeAd!= null)	
	{	
		nativeAd.OnNativeAdLoadSuccess -= OnNativeAdLoadSuccess;	
		nativeAd.OnNativeAdLoadFailed -= OnNativeAdLoadFailed;	
	}
}
```

{% endcode %}

## 5. 네이티브 노출 측정<mark style="color:red;">(필수)</mark>

네이티브 광고 로딩에 성공 후, NativeData를 화면에 노출한 경우, 직접 impression 측정을 위해 <mark style="color:red;">`reportImpression()`</mark> API를 반드시 호출해 주어야 합니다.

{% code title="C#" %}

```csharp
nativeAd.reportImpression();
```

{% endcode %}

## 6. 네이티브 클릭 측정<mark style="color:red;">(필수)</mark>

네이티브 광고를 클릭한 경우, NativeData의 landingURL로 랜딩 시킨 후, 리포트 수집을 위해 <mark style="color:red;">`reportClick()`</mark> API를 호출해 주어야 합니다.

{% code title="C#" %}

```csharp
nativeAd.reportClick();
```

{% endcode %}
