> 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/undefined-2/extra-guide/undefined-3/android.md).

# 커스텀 타입(Android)

아래 가이드에는 커스텀 타입 광고 타입에 대해 설명 하고 있으며, 기본적인 연동은 애드팝콘 SSP 정식 가이드 사이트에서 확인하시기 바랍니다.

<details>

<summary>커스텀 광고?</summary>

SDK를 통해 자동으로 광고를 노출하지 않고 광고 노출에 필요한 정보를 받아 직접 광고를 노출 시켜주는 수동 광고 타입

</details>

## 1. 기본 연동

[애드팝콘 SSP SDK Android 기본 설정](/ssp-sdk/sdk/android/undefined.md)을 참고하시고 아래 사항 SSP SDK 기본 연동 진행이 필요합니다.

* SDK 다운로드 및 설치
* 매니페스트 설정
* 필수 코드 연동

## 2. 인스턴스 생성

커스텀 광고를 요청하기 위해 인스턴스 생성 및 추가합니다.

{% code title="JAVA" %}

```java
private AdPopcornSSPCustomAd adpopcornSSPCustomAd;

	@Override
	Protected void onCreate(Bundle savedInstanceState){
	    adpopcornSSPCustomAd = new AdPopcornSSPCustomAd (context);
	}

```

{% endcode %}

## 3. PlacementId 설정

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

{% code title="JAVA" %}

```java
@Override
	Protected void onCreate(Bundle savedInstanceState){
		adpopcornSSPCustomAd = new AdPopcornSSPCustomAd (context);
		adpopcornSSPCustomAd.setPlacementId(“발급받은 placementID”);
	}
```

{% endcode %}

## 4. 광고 타입 설정

커스텀 placement의 광고 타입을 정의합니다.

| parameter                    | 설명             |
| ---------------------------- | -------------- |
| CustomAdType.BANNER\_320x50  | 배너 320x50 사이즈  |
| CustomAdType.BANNER\_300x250 | 배너 300x250 사이즈 |
| CustomAdType.BANNER\_320x100 | 배너 320x100 사이즈 |
| CustomAdType.INTERSTITIAL    | 전면 광고          |
| CustomAdType.NATIVE\_AD      | 네이티브 광고        |

{% code title="JAVA" %}

```java
@Override
	Protected void onCreate(Bundle savedInstanceState){
		adpopcornSSPCustomAd = new AdPopcornSSPCustomAd (context);
		adpopcornSSPCustomAd.setPlacementId(“발급받은 placementID”);
		adpopcornSSPCustomAd.setAdType(CustomAdType.NATIVE_AD);
	}
```

{% endcode %}

## 5. 이벤트 리스너 설정

광고 요청에 대한 결과를 전달 받을 이벤트 리스너를 등록합니다.

<table><thead><tr><th width="269">이벤트 리스너</th><th>설명</th></tr></thead><tbody><tr><td>OnCustomAdReceiveSuccess</td><td>광고 요청에 성공한 경우. adData에 광고 정보가 넘어옵니다.</td></tr><tr><td>OnCustomAdReceiveFailed</td><td>광고 요청에 실패한 경우</td></tr></tbody></table>

{% code title="JAVA" %}

```java
private AdPopcornSSPCustomAd adpopcornSSPCustomAd;

	@Override
	Protected void onCreate(Bundle savedInstanceState){
            adpopcornSSPCustomAd = new AdPopcornSSPCustomAd (context);
            adpopcornSSPCustomAd.setPlacementId(“발급받은 placementID”);
            adpopcornSSPCustomAd.setAdType(CustomAdType.NATIVE_AD);
            adpopcornSSPCustomAd.setCustomAdEventCallbackListener (new ICustomAdListener(){
                        @Override
                        public void OnCustomAdReceiveSuccess (String placementId, , String adData) {
                
                        }

                        @Override
                        public void OnCustomAdReceiveFailed (String placementId, SSPErrorCode code) {

			}
            });
	}
```

{% endcode %}

* 각 광고 타입별 성공 시 adData 예시는 아래와 같습니다.

{% tabs %}
{% tab title="200: adData 예시 - 배너, 전면" %}

```html
<html><head><style>html,body{overflow:hidden;position:relative;width:100%;heigh
t:100%;margin:0;padding:0}</style></head>><body>
<a href="https://partners.igaworks.com/"target="_blank">
<img src="https://adpopcorn-ssp/test_campaign/300x250.JPG" width="300"
height="250" /></a></body></html><style>
html,body{overflow:hidden;position:relative;width:100%;height:100%;margin:0;paddin
g:0}</style>
```

{% endtab %}

{% tab title="200: adData 예시 - 네이티브" %}

```json
{
	 CtaText = “Click";
	 Desc = “Adpopcorn SSP description sample”;
	 IconImageURL = “https://static.adbrix.igaworks.com/adpopcornssp/test_campaign/80x80_icon.jpg”;
	 MainImageURL = “https://static.adbrix.igaworks.com/adpopcornssp/test_campaign/1200x627.jpg”;
	 PrivacyPolicyImageURL = “https://static.adbrix.igaworks.com/adpopcornssp/default_image/warning.png”;
	 PrivacyPolicyURL = “https://www.igaworks.com/ko/rule_user.html”;
	 Title = “Title sample”;
	 LandingURL = “https://www.igaworks.com”;
}
```

{% endtab %}
{% endtabs %}

## 6. 광고 요청

광고 요청 시점에 load API 호출하여 서버에 광고를 요청합니다.

{% code title="JAVA" %}

```java
private AdPopcornSSPCustomAd adpopcornSSPCustomAd;

	@Override
	Protected void onCreate(Bundle savedInstanceState){
            adpopcornSSPCustomAd = new AdPopcornSSPCustomAd (context);
            adpopcornSSPCustomAd.setPlacementId(“발급받은 placementID”);
            adpopcornSSPCustomAd.setAdType(CustomAdType.NATIVE_AD);
            adpopcornSSPCustomAd.setCustomAdEventCallbackListener (new ICustomAdListener(){
                        @Override
                        public void OnCustomAdReceiveSuccess (String placementId, , String adData) {
                
                        }

                        @Override
                        public void OnCustomAdReceiveFailed (String placementId, SSPErrorCode code) {

			}
            });
            adpopcornSSPCustomAd.loadAd();
	}
```

{% endcode %}

## 7. 광고 노출, 클릭 리포트 수집

커스텀 광고 타입의 경우 매체가 직접 광고물을 노출시키고, 클릭 처리를 해주어야 하기에 <mark style="color:red;">반드시 아래 두 API를 적절한 시점해 호출해 주는 연동을 진행해 주어야 정확한 데이터 수집이 가능</mark>합니다.

{% code title="JAVA" %}

```java
// 광고 노출 시점에 호출
adpopcornSSPCustomAd.reportImpression();
    
// 광고 클릭 시점에 호출
adpopcornSSPCustomAd.reportClick();
```

{% endcode %}

위 연동 중 궁금하신 사항이나 수정이 필요한 부분이 있으면 애드팝콘 사업팀(<pm@adpopcorn.com>)으로 메일 주시기 바랍니다.
