# Android용 인터스티셜 광고 통합

> 광고 유닛을 초기화하고, 리스너를 설정하고, 광고를 로드하고, 유효성 확인하고, 적절한 시점에 표시하여 Android 앱에 인터스티셜 광고 쉽게 통합할 수 있습니다.

Unity 레벨플레이 인터스티셜 광고 전체 화면 광고 유닛으로, 일반적으로 앱 라이프사이클 동안 자연스러운 전환 지점에서 게재됩니다. 

> **Note:**
>
> 이 기술 자료는 SDK 8.4.0 이상에 해당합니다.

## 필수 조건##prerequisites

* 레벨플레이 SDK를 애플리케이션 올바르게 연동했는지 확인합니다. 통합은 [여기](/grow/levelplay/sdk/android/integration-checklists.md) 설명되어 있습니다.
* 레벨플레이 초기화 API 사용하여 SDK를 초기화해야 합니다.
* 레벨플레이 대시보드에서 AdUnitID를 찾습니다.

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

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

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

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

```java
LevelPlayInterstitialAd mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
```

```java
val mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
```

## 인터스티셜 광고 리스너 설정##set-interstitial-listener

코드에 **LevelPlayInterstitialAdListener를 구현**하여 광고 전송에 대해 알 수 있습니다. 

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

```java
// Create the interstitial ad object
LevelPlayInterstitialAd mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
mInterstitialAd.setListener(new LevelPlayInterstitialAdListener() {
    @Override
    public void onAdLoaded(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was loaded successfully
    }
    @Override
    public void onAdLoadFailed(LevelPlayAdError levelPlayAdError) {
        // Ad load failed 
    }
    @Override
    public void onAdDisplayed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }
    @Override
    public void onAdDisplayFailed(LevelPlayAdError levelPlayAdError, LevelPlayAdInfo levelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    @Override
    public void onAdClicked(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    @Override
    public void onAdClosed(LevelPlayAdInfo levelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    @Override
    public void onAdInfoChanged(LevelPlayAdInfo levelPlayAdInfo) {
        // Called after the ad info is updated. 다른 인터스티셜 광고 광고가 로드되었을 때 사용 가능하며 CPM/Rate가 더 높습니다.
        // Optional
    }
});
```

```java
// Create the interstitial ad object 
val mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
mInterstitialAd.setListener(object : LevelPlayInterstitialAdListener {
    override fun onAdLoaded(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was loaded successfully
    }
    override fun onAdLoadFailed(levelPlayAdError: LevelPlayAdError) {
        // Ad load failed
    }
    override fun onAdDisplayed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was displayed and visible on screen
    }
    오버라이드 fun onAdDisplayFailed(levelPlayAdError: LevelPlayAdError, levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad fails to be displayed
        // Optional
    }
    override fun onAdClicked(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was clicked
        // Optional
    }
    override fun onAdClosed(levelPlayAdInfo: LevelPlayAdInfo) {
        // Ad was closed
        // Optional
    }
    override fun onAdInfoChanged(levelPlayAdInfo: LevelPlayAdInfo) {
        // Called after the ad info is updated. 다른 인터스티셜 광고 광고가 로드되었을 때 사용 가능하며 CPM/Rate가 더 높습니다.
        // Optional
    }
})
```

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

**LevelPlayAdInfo** 파라미터에는 로드된 광고에 대한 정보가 포함되어 있습니다.

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

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

```java
mInterstitialAd.loadAd();
```

```java
mInterstitialAd.loadAd()
```

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

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

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

```java
public void showInterstitialAd() {
    // Check that ad is ready
    if (mInterstitialAd.isAdReady()) {
        // Show ad 
        mInterstitialAd.showAd(this);
    }
}
```

```kotlin
fun showInterstitialAd() {
    // Check that ad is ready
    if (mInterstitialAd.isAdReady()) {
        // Show ad
        mInterstitialAd.showAd(this)
    }
}
```

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

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

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

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

```java
// Check that ad is ready and that the placement is not capped 
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
    mInterstitialAd.showAd(this, placementName);
}
```

```java
// Check that ad is ready and that the placement is not capped
if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
    mInterstitialAd.showAd(this, placementName)
}
```

### Placements##placements

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

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

```java
public void showInterstitialAdWithPlacement() {
    // Check that ad is ready and that the placement is not capped 
    if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
        // Show ad with placement 
        mInterstitialAd.showAd(this, placementName);
    }
}
```

```java
fun showInterstitialAdWithPlacement(placementName: 문자열) {
    // Check that ad is ready and that the placement is not capped
    if (mInterstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped(placementName)) {
        // Show ad with placement
        mInterstitialAd.showAd(this, placementName)
    }
}
```

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

```java
public class InterstitialAdActivity extends Activity implements LevelPlayInterstitialAdListener { 
    private LevelPlayInterstitialAd mInterstitialAd;
    void createInterstitialAd() { 
        mInterstitialAd = new LevelPlayInterstitialAd("adUnitId"); 
        mInterstitialAd.setListener(this); 
    } 
    void loadInterstitialAd() { 
        // Used to load or reload the ad 
        mInterstitialAd.loadAd(); 
    } 
    void showInterstitialAd() { 
        if (mInterstitialAd.isAdReady()) { 
            mInterstitialAd.showAd(this); 
        }
    }
    void showInterstitialAd(@NonNull String placementName) { 
        // Check that ad is ready and that the placement is not capped 
        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) {} 
}
```

```java
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: 문자열) {
        // Check that ad is ready and that the placement is not capped 
        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) {}
}
```

## 레벨플레이 Mediation 데모 앱##levelplay-mediation-demo-app

통합 데모 애플리케이션 앱에 인터스티셜 광고 광고 유닛 API를 통합하는 방법을 보여 줍니다.

[Android 데모 애플리케이션 다운로드](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

[통합 테스트 제품군](/grow/levelplay/sdk/android/integration-test-suite.md)과의 통합 여부 확인

## 다음 단계##next-steps

추가 인터스티셜 광고 광고 네트워크를 연동하거나 추가 광고 형식을 설정 Unity 통합 가이드를 따르십시오.

* [Mediation Networks 추가](/grow/levelplay/sdk/android/mediation-networks.md)
* [보상형 광고](/grow/levelplay/sdk/android/rewarded-ads-integration.md)
* [배너 광고](/grow/levelplay/sdk/android/banner-integration.md)
* [네이티브 광고](/grow/levelplay/sdk/android/native-ads-integration.md)
