# Flutter のバナーインテグレーション

> Unity LevelPlay SDK を使用して Flutter アプリケーションにバナー広告を実装し、さまざまな広告サイズとメディエーションネットワークをサポートします。

バナーは、システムによって開始される長方形の広告で、静的またはアニメーションにすることができ、ライブアコンテンツ定されたエリアに配信されます。 

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

## 前提条件##prerequisites

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

## バナー広告オブジェクトの作成とサイズの設定##create-banner-ad-objectand-set-size

バナー広告オブジェクトは、`onInitSuccess` コールバックの受信後に作成します。

```dart
final GlobalKey<LevelPlayBannerAdViewState> _bannerKey = GlobalKey<LevelPlayBannerAdViewState>();
@override
Widget build(BuildContext context) { 
    return SizedBox(
          width: _adSize.width.toDouble(),
          height: _adSize.height.toDouble(),
          子:LevelPlayBannerAdView(
            key: _bannerKey,
            adUnitId: [YOUR_AD_UNIT_ID],
            adSize: [YOUR_AD_SIZE],
            listener: [YOUR_LISTENER],
            placementName: [YOUR_PLACEMENT], // 任意
            onPlatformViewCreated:[YOUR_LOAD_BANNER_METHOD] // optional
          ),
        );
}
```

### バナーサイズ##banner-sizes

| LevelPlayAdSize   | 説明                                     | 寸法 (dp) (幅 X 高さ) |
| ----------------- | -------------------------------------- | ---------------- |
| バナー               | 標準バナー                                  | 320×50           |
| 大規模               | Large バナー                              | 320 x 90         |
| MEDIUM\_RECTANGLE | 中矩形 (MREC)                             | 300 x 250        |
| 適応型               | 広告を自動的にレンダリングして、モバイルおよびタブレットのサイズと向きを調整 | デバイスの幅 X 推奨の高高さ  |

広告サイズを作成するには、以下のいずれかのオプションに従います。

* 画面幅に合わせて調整できる適応型広告サイズ（推奨）：このオプションは、デバイスタイプに応じて バナー または LeaderBOARD を返すため、"SMART" インテグレーションに置き換わります。適応型機能 (Google、Yandex) をサポートするネットワークは、最適化ロジックに基づいて高ささを返します。

  ```dart
  LevelPlayAdSize adSize = await LevelPlayAdSize.createAdaptiveAdSize();
  ```

* 固定幅広告サイズを使用した適応型広告サイズ:このオプションを使用すると、特定の幅を設定できます。適応型バナー特徴 (Google、Yandex) をサポートするネットワークは、指定された幅に基づく最適化ロジックに基づいて高ささを返します。他のすべてのネットワークは、指定された幅に応じたフォールバック サイズ（バナーまたは LeaderBOARD）を返します。

  ```dart
  LevelPlayAdSize adSize = await LevelPlayAdSize.createAdaptiveAdSize(width: 400);
  ```

* 特定のバナーサイズ：このオプションでは、バナーサイズ（バナー、大、中）を指定できます。

  ```dart
  LevelPlayAdSize adSize = LevelPlayAdSize.MEDIUM_RECTANGLE;
  ```

### Placements##placements

Unity はバナーの[プレースメントを](/grow/levelplay/platform/settings/placements.md)レポート用にのみサポートします。`loadAd`の前にプレースメントを設定して、リロードされたすべての広告に影響を与えます。

## バナーの設定##set-banner-listener

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

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

```dart
/**
 バナーがロードされた後に呼び出されます。
 @param adInfo 広告の情報。
 */ 
@override
void onAdLoaded(LevelPlayAdInfo adInfo) {}
/**
 バナーのロードに失敗した後に呼び出されます。
 @param error エラーに関する情報
 */ 
@override
void onAdLoadFailed(LevelPlayAdError error) {}
/**
 画面が表示されることを通知します。
 @param adInfo 広告の情報。
 */ 
@override
void onAdDisplayed(LevelPlayAdInfo adInfo) {}
/**
 画面ディスプレイに失敗したことを通知します。
 @param adInfo 広告の情報。
 @param error エラーに関する情報
 */ 
@override
void onAdDisplayFailed(LevelPlayAdInfo adInfo, LevelPlayAdError error) {}
/**
 ユーザーがバナー広告をクリックしたときに呼び出されます。
 @param adInfo 広告の情報。
 */ 
@override
void onAdClicked(LevelPlayAdInfo adInfo) {}
/**
 広告が全画面で開きます。
 @param adInfo 広告の情報。
 */ 
@override
void onAdExpanded(LevelPlayAdInfo adInfo) {}
/**
 広告が元のサイズに復元されます。
 @param adInfo 広告の情報。
 */ 
@override
void onAdCollapsed(LevelPlayAdInfo adInfo) {}
/**
 ユーザーが広告をクリックし、アプリケーション外に移動した。
 @param adInfo 広告の情報。
 */ 
@override
void onAdLeftApplication(LevelPlayAdInfo adInfo) {}
```

## ロードバナー広告##load-banner-ad

バナー広告をロードするには、**loadAd** を使用します。

```dart
// Load the banner ad 
_bannerKey.currentState?.loadAd();
```

loadAd は、バナービューコンテナが完全に作成された`onPlatformViewCreated is called`時、または選択した他のタイミングで呼び出すことができます。

## バナー更新の一時停止と再開##pause-and-resume-banner-refresh

プラットフォームで更新値が定義されている場合は、コードのバナー更新を一時停止できます。バナー広告の自動更新を停止するか、一時停止後に再度有効にするには、以下の方法を使用します。 

> **Note:**
>
> バナーが再度表示されると、バナーが一時停止されてから更新までの時間が完了します。 

* `pauseAutoRefresh`：バナー広告の自動更新を一時停止します。
* `resumeAutoRefresh`：バナー広告が一時停止された後、自動更新が再開されます。

```dart
// Pause refresh 
_bannerKey.currentState?.pauseAutoRefresh(); 
// Resume refresh 
_bannerKey.currentState?.resumeAutoRefresh();
```

## バナー広告の破棄##destroy-banner-ad

バナーを破棄するには、 `destroy` メソッドを呼び出します。

破棄されたバナーは再度表示できなくなります。さらに広告をディスプレイするには、新しい `LevelPlayBannerAdView` オブジェクトを作成します。 

```dart
_bannerKey.currentState?.destroy();
```

## バナー広告の完全な実装例##full-implementation-example-of-banner-ads

ここでは、標準バナーサイズを使用してバナー広告を作成およびロードする例を示します。

```dart
  // Start of the widget...
  final _bannerKey = GlobalKey<LevelPlayBannerAdViewState>();
  final adSize = LevelPlayAdSize.BANNER;
  @override
  Widget build(BuildContext context) {
    return SizedBox(
      width: adSize.width.toDouble(), // Get actual banner layout width size
      height: adSize.height.toDouble(), // Get actual banner layout height size
      子:LevelPlayBannerAdView(
        key: _bannerKey,
        adUnitId:'YOUR_AD_UNIT_ID',
        adSize: adSize,
        聞き手：これ
        placementName: 'YOUR_PLACEMENT',
        onPlatformViewCreated: () {
	// In this implementation we call loadAd on the key,
            // it is also possible to store the LevelPlayBannerAdView widget
            // in a variable and call loadAd on it as described above in the docs.
          _bannerKey.currentState?.loadAd(); 
        },
      ),
    );
  }
  @override
  void onAdClicked(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdCollapsed(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdDisplayFailed(LevelPlayAdInfo adInfo, LevelPlayAdError error) {
    // Implement your logic here...
  }
  @override
  void onAdDisplayed(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdExpanded(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdLeftApplication(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  @override
  void onAdLoadFailed(LevelPlayAdError error) {
    // Implement your logic here...
  }
  @override
  void onAdLoaded(LevelPlayAdInfo adInfo) {
    // Implement your logic here...
  }
  // 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/interstitial-integration.md)
* [ネイティブ広告](/grow/levelplay/sdk/flutter/native-ads-integration.md)
