# 전면 광고

### 1 : 준비

* [프로젝트 설정](/adpie/android/project-settings.md)을 통해 광고 연동을 위한 준비를 합니다.
* [사이트](http://my.adpies.com) 에서 매체를 등록하여 Media ID와 Slot ID 를 발급받습니다.
* 전면 광고의 경우 이미지와 비디오가 있으며, 대시보드에서 광고유형을 `Image` 또는 `Video` 를 필수적으로 하나 선택해야 합니다.
* 전면 비디오 광고는 보통 높은 단가를 형성하여 이미지 광고 보다 우선적으로 노출하는 것을 권장합니다.

```diff
- (주의사항) 전면 비디오 광고를 노출하기 위해서는 SDK 1.12.0 버전 이상을 연동해야 합니다.
```

### 2 : 광고 요청과 표출

* SDK 초기화를 하지 않았다면, [사이트](http://my.adpies.com)에서 발급받은 Media ID를 입력하여 초기화를 호출합니다.
* 사이트에서 발급받은 Slot ID를 입력하여 InterstitialAd 객체를 생성합니다.
* 광고 요청과 표출로 메소드가 각각 나누어져 있습니다.
* 광고 요청시 load() 메소드를 호출하고, 표출 시 show()를 호출합니다.
* 광고 컨텐츠가 로드되지 않을 가능성이 있기에 isLoaded()를 통해 확인 후 show() 메소드를 호출합니다.

```java
private InterstitialAd interstitialAd;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // SDK 초기화로 앱실행 1회만 호출한다. (Main Activity 에 필수로 입력한다.)
    AdPieSDK.getInstance().initialize(getApplicationContext(), "AdPie-Media-ID");

    ...

    // 광고 연동을 위한 슬롯 ID를 필수로 입력한다.
    interstitialAd = new InterstitialAd(this, "AdPie-Slot-ID");
    interstitialAd.load();
}
```

### 3 : 광고 리스너 사용

* 광고 요청에 대한 이벤트를 수신할 수 있습니다.
* [에러코드](/adpie/android/common/errorcode.md)를 통해 광고 실패에 대한 이유를 알 수 있습니다.

#### 1) 공통 (전면 이미지, 전면 비디오)

```java
 interstitialAd.setAdListener(
     new com.gomfactory.adpie.sdk.InterstitialAd.InterstitialAdListener() {
         @Override
         public void onAdLoaded() {
             // 광고 로딩 완료 후 이벤트 발생

             // 광고 요청 후 즉시 노출하고자 할 경우 아래의 코드를 추가
             if (interstitialAd.isLoaded()) {
                 // 광고 표출
                 interstitialAd.show();
             }
         }

         @Override
         public void onAdFailedToLoad(int errorCode) {
            // 광고 요청 실패 후 이벤트 발생
            // error message -> AdPieError.getMessage(errorCode)
         }

         @Override
         public void onAdShown() {
            // 광고 표출 후 이벤트 발생
         }

         @Override
         public void onAdClicked() {
            // 광고 클릭 후 이벤트 발생
         }

         @Override
         public void onAdDismissed() {
            // 광고 닫기 후 이벤트 발생
         }
         
         @Override
         public void onAdFailedToShow() {
            // 광고 표출 실패 후 이벤트 발생
         }
     }
 );
```

#### 2) 전면 비디오 전용 리스너 (VideoPlaybackListener)

```java
interstitialAd.setVideoAdPlaybackListener(
    new VideoAdPlaybackListener() {
            @Override
            public void onVideoAdStarted() {
                // 비디오 재생 시작
            }

            @Override
            public void onVideoFinished(FinishState finishState) {
                // 비디오 재생 종료
                
                switch (finishState) {
                    case ERROR: // 동영상 광고 오류
                    case SKIPPED: // 동영상 광고 건너뜀
                    case COMPLETED: // 동영상 광고 시청완료
                        break;
                }
            }
});
```


---

# 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://platform-business.gitbook.io/adpie/android/integration/interstitial.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.
