# Android 向けインタースティシャルインテグレーション

> 広告単位の初期化、リスナーの設定、広告のロード、可用性の確認、適切なタイミングでの表示を行うことにより、Androidアプリケーションへのインタースティシャル広告のインテグレーションを容易にします。

Unity LevelPlay Interstitial は、全画面の広告単位です。通常は、アプリケーションのライフサイクル中の自然な遷移ポイントで機能します。 

> **Note:**
>
> このドキュメントは SDK 8.4.0 以降に関連するものです。

## 前提条件##prerequisites

* LevelPlay SDK がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要は[こちら](/grow/levelplay/sdk/android/integration-checklists.md)です。
* LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
* LevelPlay ダッシュボードで 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/レートが高い場合に利用可能
        // 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
    }
    override 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/レートが高い場合に利用可能
        // Optional
    }
})
```

### LevelPlay 広告情報##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、それ以外の場合は false を返します。

**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

LevelPlay ダッシュボードでは、インタースティシャルの[プレースメント](/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
クラス InterstitialAdActivity ：Activity(), LevelPlayInterstitialAdListener {
    private lateinit 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) {}
    override fun onAdLoadFailed(error:LevelPlayAdError) {}
    オーバーライド fun onAdInfoChanged(adInfo:LevelPlayAdInfo) {}
    override fun onAdDisplayed(adInfo:LevelPlayAdInfo) {}
    オーバーライド fun onAdDisplayFailed(エラー:LevelPlayAdError、adInfo：LevelPlayAdInfo) {}
    override fun onAdClicked(adInfo:LevelPlayAdInfo) {}
    override fun onAdClosed(adInfo:LevelPlayAdInfo) {}
}
```

## LevelPlay Mediation デモアプリケーション##levelplay-mediation-demo-app

インテグレーション Demo (インテグレーションデモ) アプリケーションは、アプリケーションにインタースティシャル広告単位 API を統合する方法を示します。

[Androidデモアプリケーションのダウンロード](https://github.com/ironsource-mobile/Mediation-Demo-Apps)

[インテグレーションテストスイート](/grow/levelplay/sdk/android/integration-test-suite.md)とのインテグレーションを確認します。

## 次のステップ##next-steps

インテグレーション ガイドに従って、追加のインタースティシャル広告ネットワークを統合したり、追加の広告フォーマットを設定したりできます。

* [メディエーションネットワークの追加](/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)
