# Android용 인터스티셜 광고 광고 유닛 API 마이그레이션

> 앱 키로 SDK를 초기화하고 특정 광고 유닛 ID로 재사용 가능한 인터스티셜 광고 오브젝트를 생성하고, 로딩, 표시, 닫기와 같은 광고 이벤트를 처리하기 위해 리스너를 구현하여 레벨플레이 인터스티셜 광고 유닛 API로 마이그레이션할 수 있습니다.

이 가이드에서는 현재 구현에서 광고 유닛 ID를 사용하여 레벨플레이 인터스티셜 광고 API로 전환 인터스티셜 광고 로드하고 표시하는 방법을 설명합니다.

## 필수 조건##prerequisites

* 최소 지원 SDK는 8.6.0입니다. 최신 SDK는 [여기](/grow/levelplay/sdk/android/sdk-integration.md)에서 다운로드할 수 있습니다.
* 레벨플레이 초기화 API 사용하여 SDK를 초기화해야 합니다.
* 레벨플레이 대시보드에서 AdUnitID를 찾습니다.

## 인터스티셜 광고 오브젝트 생성##create-interstitial-ad-object

인터스티셜 광고 오브젝트의 생성은 **onInitSuccess** 콜백을 수신한 후에 수행해야 합니다.

오브젝트 세션 전체에 걸쳐 여러 로드와 표시를 처리할 수 있는 재사용 가능한 인스턴스. 생성 후에는 동일한 광고 유닛의 광고를 로드하고 표시하는 데 사용해야 합니다.

더 고급 구현을 위해 필요한 경우 여러 개의 인터스티셜 광고 객체를 생성할 수 있습니다.

1. **Java**

   ```java
   // 인터스티셜 광고 만들기
   mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
   ```

2. **Kotlin**

   ```kotlin
   // 인터스티셜 광고 만들기
   mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
   ```

## 인터스티셜 광고 이벤트 등록##register-to-interstitial-events

광고 전송에 대해 알리기 위해 **LevelPlayInterstitialListener** 대신 코드에 **LevelPlayInterstitialAdListener를** 구현하십시오. 

* 인터스티셜 광고 광고를 로드하기 전에 리스너를 설정하는 것이 좋습니다.
* 각 인터스티셜 광고 광고에는 고유한 리스너 구현이 있어야 합니다.
* 콜백은 메인 스레드 실행됩니다.

1. **Java**

   ```java
   // 인터스티셜 광고 만들기
   mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
   // 리스너 설정
   mInterstitialAd.setListener(this);

   // LevelPlayInterstitialAdListener methods
   @Override
   public void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}
   @Override
   public void onAdLoadFailed(@NonNull LevelPlayAdError error) {}
   @Override
   public void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}
   @Override
   public void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}
   @Override
   public void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}
   @Override
   public void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}
   @Override
   public void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}
   ```

2. **Kotlin**

   ```kotlin
   // 인터스티셜 광고 만들기
   mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
   // 리스너 설정
   mInterstitialAd.setListener(this)
   // LevelPlayInterstitialAdListener methods
   override fun onAdLoaded(adInfo: LevelPlayAdInfo) {}
   오버라이드 fun onAdLoadFailed(오류: LevelPlayAdError) {}
   override fun onAdInfoChanged(adInfo: LevelPlayAdInfo) {}
   override fun onAdDisplayed(adInfo: LevelPlayAdInfo) {}
   오버라이드 fun onAdDisplayFailed(오류: LevelPlayAdError, adInfo: LevelPlayAdInfo) {}
   override fun onAdClicked(adInfo: LevelPlayAdInfo) {}
   override fun onAdClosed(adInfo: LevelPlayAdInfo) {}
   ```

|    | 레거시                           | 광고 단위(신규)                       |
| -- | ----------------------------- | ------------------------------- |
| 청자 | LevelPlayInterstitialListener | LevelPlayInterstitialAdListener |
| 콜백 | onAdReady                     | onAdLoaded                      |
|    | onAdLoadFailed                | onAdLoadFailed                  |
|    | onAdOpened                    | onAdDisplayed                   |
|    | onAdClosed                    | onAdClosed                      |
|    | onAdShowFailed                | onAdDisplayFailed               |
|    | onAdClicked                   | onAdClicked                     |
|    | onAdShowSucceeded             | - (사용 중단 예정)                    |
|    |                               | onAdInfoChanged                 |

### 레벨플레이 광고 정보##levelplay-ad-info

> **Note:**
>
> 인터스티셜 광고 리스너 콜백이 반환하는 **AdInfo** 클래스 **LevelPlayAdInfo**로 대체되었습니다.

## 인터스티셜 광고 로드##load-interstitial-ad

인터스티셜 광고를 로드하려면 **loadInterstitial** 대신 **loadAd를** 사용합니다.

1. **Java**

   ```java
   // 광고를 로드하거나 다시 로드합니다.
   mInterstitialAd.loadAd();
   ```

2. **Kotlin**

   ```kotlin
   // 광고를 로드하거나 다시 로드합니다.
   mInterstitialAd.loadAd()
   ```

## 인터스티셜 광고 표시##show-interstitial-ad

**LevelPlayInterstitialAdListener** API를 사용하여 **onAdLoaded** 콜백을 수신한 후 인터스티셜 광고를 표시합니다.

* 공유하는 데 필요한 **활동**입니다.
* 플레이스먼트를 사용하는 경우 아래의 Placements 섹션 같이 showAd API 플레이스먼트 이름을 전달.
* 광고가 사용자 성공적으로 표시되면 로딩 단계를 반복하여 다른 광고를 로드할 수 있습니다.

1. **Java**

   ```java
   // 플레이스먼트 없이 광고 표시
   mInterstitialAd.showAd(this);
   // 플레이스먼트가 있는 광고 표시
   mInterstitialAd.showAd(this, placementName);
   ```

2. **Kotlin**

   ```kotlin
   // 플레이스먼트 없이 광고 표시
   mInterstitialAd.showAd(this)
   // 플레이스먼트가 있는 광고 표시
   mInterstitialAd.showAd(this, placementName)
   ```

### 광고가 준비되었는지 확인##check-ad-is-ready

표시 실패를 방지하고 광고가 올바르게 표시되었는지 확인하기 위해 **showAd** API를 호출하기 전에 다음 API를 사용하는 것이 좋습니다.

**isAdReady** – 광고가 성공적으로 로드되고 광고 유닛이 제한되지 않거나 거짓이 아닌 경우 true를 반환합니다.

**isPlacementCapped** – 유효한 플레이스먼트가 제한되면 true를 반환합니다. 플레이스먼트가 유효하지 않거나 제한이 없는 경우 이 API false를 반환합니다.

1. **Java**

   ```java
   // 광고가 준비되었는지, 플레이스먼트가 제한되지 않았는지 확인합니다.
   if (mInterstitialAd.isAdReady() &amp;&amp; !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
       mInterstitialAd.showAd(this, placementName);
   }
   ```

2. **Kotlin**

   ```kotlin
   // 광고가 준비되었는지, 플레이스먼트가 제한되지 않았는지 확인합니다.
   if (mInterstitialAd.isAdReady() &amp;&amp; !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
       mInterstitialAd.showAd(this, placementName)
   }
   ```

### Placements##placements

레벨플레이 대시보드에서 인터스티셜 광고의 [플레이스먼트](/grow/levelplay/platform/settings/placements.md) 속도와 한도를 지원합니다.

인터스티셜 광고에 대한 플레이스먼트가 설정된 경우 특정 플레이스먼트에 광고를 게재하려면 **showAd** 메서드를 호출합니다.

1. **Java**

   ```java
   // 광고가 준비되었는지, 플레이스먼트가 제한되지 않았는지 확인합니다.
   if (mInterstitialAd.isAdReady() &amp;&amp; !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
       // 플레이스먼트가 있는 광고 표시 
       mInterstitialAd.showAd(this, placementName);
   }
   ```

2. **Kotlin**

   ```kotlin
   // 광고가 준비되었는지, 플레이스먼트가 제한되지 않았는지 확인합니다.
   if (mInterstitialAd.isAdReady() &amp;&amp; !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
       mInterstitialAd.showAd(this, placementName)
   }
   ```

## 여러 광고 유닛 인터스티셜 광고 API##multiple-ad-unit-interstitial-apis

|     | 레거시                           | 광고 단위(신규)                                 |
| --- | ----------------------------- | ----------------------------------------- |
| API | loadInterstitial              | loadAd                                    |
|     | showInterstitial              | showAd                                    |
|     | isInterstitialPlacementCapped | LevelPlayInterstitialAd.isPlacementCapped |
|     | isInterstitialReady           | isAdReady                                 |

## 인터스티셜 광고 전체 구현 예시##full-implementation-example-of-interstitial-ads

1. **Java**

   ```java
   공용 클래스 InterstitialAdActivity 확장 활동 구현 LevelPlayInterstitialAdListener {
       private LevelPlayInterstitialAd mInterstitialAd;

       void createInterstitialAd() {
           mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
           mInterstitialAd.setListener(this);
       }

       void loadInterstitialAd() {
           mInterstitialAd.loadAd();
       }

       void showInterstitialAd() {
           if (mInterstitialAd.isAdReady()) {
               mInterstitialAd.showAd(this);
           }
       }

       void showInterstitialAd(@NonNull String placementName) {
           if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
               mInterstitialAd.showAd(this, placementName);
           }
       }

       // LevelPlayInterstitialAdListener methods
       @Override
       public void onAdLoaded(@NonNull LevelPlayAdInfo adInfo) {}
       @Override
       public void onAdLoadFailed(@NonNull LevelPlayAdError error) {}
       @Override
       public void onAdDisplayed(@NonNull LevelPlayAdInfo adInfo) {}
       @Override
       public void onAdClosed(@NonNull LevelPlayAdInfo adInfo) {}
       @Override
       public void onAdClicked(@NonNull LevelPlayAdInfo adInfo) {}
       @Override
       public void onAdDisplayFailed(@NonNull LevelPlayAdError error, @NonNull LevelPlayAdInfo adInfo) {}
       @Override
       public void onAdInfoChanged(@NonNull LevelPlayAdInfo adInfo) {}
   }
   ```

2. **Kotlin**

   ```kotlin
   class InterstitialAdActivity : Activity(), LevelPlayInterstitialAdListener {
       private latinit var mInterstitialAd: LevelPlayInterstitialAd

       fun createInterstitialAd() {
           mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
           mInterstitialAd.setListener(this)
       }

       fun loadInterstitialAd() {
           mInterstitialAd.loadAd()
       }

       fun showInterstitialAd() {
           if (mInterstitialAd.isAdReady()) {
               mInterstitialAd.showAd(this)
           }
       }

       fun showInterstitialAd(placementName: 문자열) {
           if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
               mInterstitialAd.showAd(this, placementName)
           }
       }

       // LevelPlayInterstitialAdListener methods
       override fun onAdLoaded(adInfo: LevelPlayAdInfo) {}
       오버라이드 fun onAdLoadFailed(오류: LevelPlayAdError) {}
       override fun onAdInfoChanged(adInfo: LevelPlayAdInfo) {}
       override fun onAdDisplayed(adInfo: LevelPlayAdInfo) {}
       오버라이드 fun onAdDisplayFailed(오류: LevelPlayAdError, adInfo: LevelPlayAdInfo) {}
       override fun onAdClicked(adInfo: LevelPlayAdInfo) {}
       override fun onAdClosed(adInfo: LevelPlayAdInfo) {}
   }
   ```

## **완료!**##**done!**

이제 새로운 다중 광고 유닛 API를 사용하여 애플리케이션 인터스티셜 광고 게재할 수 있습니다.
