# Flutter のインタースティシャルインテグレーション

> Unity LevelPlay SDKを使用して、Flutterアプリケーションに全画面のインタースティシャル広告を統合し、静的形式と動画形式の両方をサポートします。

LevelPlay インタースティシャルは全画面の広告単位であり、通常はアプリケーションのライフサイクル中の自然な遷移ポイントで機能します。Unity は静的とビデオの両方のインタースティシャルをサポートします。

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

## 前提条件##prerequisites

* LevelPlay Flutter プラグインがアプリケーションに正しく[統合され](/grow/levelplay/sdk/flutter/plugin-integration.md)ていることを確認します。
* LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
* LevelPlay ダッシュボードで AdUnitID を見つけます。

## インタースティシャルの作成とイベントへの登録##create-interstitial-and-register-to-events

インタースティシャル オブジェクトは、 が `onInitSuccess` コールバックを受信した後に作成します。

LevelPlay SDK は、インタースティシャルアクティビティを通知するいくつかのイベントを発生させます。これらのイベントを受信するには、広告単位のリスナーを登録します。情報の損失を防ぐために、SDK を初期化する前にリスナーを必ず設定してください。

```dart
final LevelPlayInterstitialAd _interstitialAd = LevelPlayInterstitialAd(adUnitId: [YOUR_AD_UNIT]);

@override
void initState() {
    super.initState();
    _interstitialAd.setListener(this);
}
```

## インタースティシャルリスナーの設定##set-interstitial-listener

コードに `LevelPlayInterstitialAdListener` を実装して、広告配信に関する情報を取得します。

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

```dart
  @override
  void onAdLoaded(LevelPlayAdInfo adInfo) {
    // Provided when the ad is successfully loaded
  }
  @override
  void onAdLoadFailed(LevelPlayAdError error) {
    // Provided when the ad fails to load.広告単位情報が含まれている
  }
  @override
  void onAdDisplayed(LevelPlayAdInfo adInfo) {
    // Provided when the ad is displayed.これはインプレッションに相当します
  }
  @override
  void onAdDisplayFailed(LevelPlayAdError error, LevelPlayAdInfo adInfo) {
    // Provided when the ad fails to be displayed
  }
  
  @override
  void onAdClicked(LevelPlayAdInfo adInfo) {
    // Provided when the user clicks on the ad
  }
  @override
  void onAdClosed(LevelPlayAdInfo adInfo) {
    // Provided when the ad is closed
  }
  @override
  void onAdInfoChanged(LevelPlayAdInfo adInfo) {
    // Provided when the ad info is updated.別の広告がロードされ、CPM/レートが高い場合に利用可能
  }
```

## ロード インタースティシャル広告##load-interstitial-ad

インタースティシャル広告をロードするには、 `loadAd`を使用します。

```dart
_interstitialAd.loadAd();
```

## インタースティシャル広告の表示##show-interstitial-ad

`onAdLoaded` コールバックを受信した後に、`showAd` を使用してインタースティシャル広告を表示します。

* **アクティビティ**の共有に必要です。 
* プレースメントを使用する場合は、後述のプレースメントのセクションで示すように、**showAd** API に配置名を渡します。
* ユーザーに広告が正常に表示されたら、ロードステップを繰り返して別の広告をロードできます。 

```dart
// Show ad without placement 
_interstitialAd.showAd(); 
// Show ad with placement 
_interstitialAd.showAd(placement: [YOUR_PLACEMENT]);
```

### 広告の準備ができているか確認##check-ad-is-ready

表示の失敗を避け、広告が正しく機能したことを確認するために、推奨されるベストプラクティスは、`showAd` API を呼び出す前に以下の API を使用することです。

* `isAdReady`: 広告が正常にロードされ、広告単位に上限がない場合は true を、それ以外の場合は false を返します。

* `isPlacementCapped`: 有効な配置に上限がある場合に true を返します。配置が有効でないか、上限がない場合、この API は false を返します。

```dart
// Check that ad is ready and that the placement is not capped 
if(_interstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped([YOUR_PLACEMENT])) { 
    _interstitialAd.showAd(placement:[YOUR_PLACEMENT]); 
}
```

### Placements##placements

Unity は、LevelPlay ダッシュボードでインタースティシャルの[プレースメント](/grow/levelplay/platform/settings/placements.md) ペーシングとプレースメント キャップをサポートしています。 

インタースティシャル広告のプレースメントを設定している場合は、 `showAd` メソッドを呼び出して特定の配置の広告を配信します。

```dart
// Check that ad is ready and that the placement is not capped 
if(_interstitialAd.isAdReady() && !LevelPlayInterstitialAd.isPlacementCapped([YOUR_PLACEMENT])) { 
    _interstitialAd.showAd(placement:[YOUR_PLACEMENT]); 
}
```

## インタースティシャル広告の完全な実装例##full-implementation-example-of-interstitial-ads

```dart
// Start of the widget...
final LevelPlayInterstitialAd _interstitialAd = LevelPlayInterstitialAd(adUnitId:'YOUR_AD_UNIT_ID');
  @override
  void initState() {
    super.initState();
    _interstitialAd.setListener(this);
    _interstitialAd.loadAd();
  }
  @override
  void onAdClicked(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdClosed(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdDisplayFailed(LevelPlayAdError error, LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdDisplayed(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdInfoChanged(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdLoadFailed(LevelPlayAdError error) {
    // Implement your logic here...
  }
  @override
  void onAdLoaded(LevelPlayAdInfo adInfo) {
    // Implement your logic here, for example showing the ad
    _interstitialAd.showAd();
  }
  // Rest of the widget
  // End of widget...
```

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

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

[Flutter デモアプリケーションをダウンロード](https://github.com/ironsource-mobile/Flutter-SDK/tree/master/example)

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

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

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

* [メディエーションネットワークの追加](/grow/levelplay/sdk/flutter/mediation-networks.md)
* [リワード広告](/grow/levelplay/sdk/flutter/rewarded-ads-integration.md)
* [バナー広告](/grow/levelplay/sdk/flutter/banner-integration.md)
* [ネイティブ広告](/grow/levelplay/sdk/flutter/native-ads-integration.md)
