# Android 向けインタースティシャル広告単位 API への移行

> キーDK を初期化し、特定の広告単位 ID で再利用可能なインタースティシャル広告オブジェクトを作成し、ロード、表示、終了などの広告イベントをハンドルするリスナーを実装することで、LevelPlay のインタースティシャル広告単位 API に移行します。

このガイドでは、現在の実装から LevelPlay Interstitial API に遷移(広告単位 ID を使用)して、インタースティシャル広告をロードおよびディスプレイする方法について説明します。

## 前提条件##prerequisites

* サポートされている最小 SDK は 8.6.0 です。最新の SDK は[ここ](/grow/levelplay/sdk/android/sdk-integration.md)からダウンロードできます。
* LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
* LevelPlay ダッシュボードで AdUnitID を見つけます。

## インタースティシャル広告オブジェクトの作成##create-interstitial-ad-object

インタースティシャル広告オブジェクトの作成は、**onInitSuccess** コールバックの受信後に実行する必要があります。

オブジェクトは、セッションを通じて複数のロードと表示をハンドルできる再利用可能なインスタンスです。作成後、同じ広告単位の広告をロードおよび表示するために使用する必要があります。

より高度な実装では、必要に応じて複数のインタースティシャル広告オブジェクトを作成できます。

1. **Java**

   ```java
   // インタースティシャル広告の作成
   mInterstitialAd = new LevelPlayInterstitialAd("adUnitId");
   ```

2. **Kotlin**

   ```kotlin
   // インタースティシャル広告の作成
   mInterstitialAd = LevelPlayInterstitialAd("adUnitId")
   ```

## インタースティシャルイベントに登録##register-to-interstitial-events

コードに **LevelPlayInterstitialAdListener** ではなく **LevelPlayInterstitial**AdListener を実装して、広告の配信を通知します。 

* インタースティシャル広告をロードする前にリスナーを設定することをお勧めします。
* 各インタースティシャル広告には、独自のリスナー実装が必要です。
* コールバックはメインスレッドで実行されます。

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) {}
   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) {}
   ```

|        | 古い機能                          | 広告単位 (新規)                       |
| ------ | ----------------------------- | ------------------------------- |
| リスナー   | LevelPlayInterstitialListener | LevelPlayInterstitialAdListener |
| コールバック | onAdReady                     | onAdLoaded                      |
|        | onAdLoadFailed                | onAdLoadFailed                  |
|        | onAdOpened                    | onAdDisplayed                   |
|        | onAdClosed                    | onAdClosed                      |
|        | onAdShowFailed                | onAdDisplayFailed               |
|        | onAdClicked                   | onAdClicked                     |
|        | onAdShowSucceeded             | - (非推奨)                         |
|        |                               | onAdInfoChanged                 |

### LevelPlay 広告情報##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** コールバックを受信した後にインタースティシャル広告を表示します。

* **アクティビティ**の共有に必要です。
* プレースメントを使用する場合は、後述のプレースメントのセクションに示すように、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、それ以外の場合は false を返します。

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

LevelPlay ダッシュボードでは、インタースティシャルの[プレースメント](/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
   public クラス 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
   クラス 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:文字列) {
           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) {}
   }
   ```

## **完了!**##**done!**

これで、新しい複数の広告単位 API を使用してアプリケーションでインタースティシャル広告を配信する設定が完了しました。
