# Unity 向けバナーインテグレーション

> SDKの初期化、初期化後のバナー広告オブジェクトの作成、適切な広告サイズと位置の設定によって、Unityにバナー広告を統合します。

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

> **Note:**
>
> このドキュメントは、SDK 8.4.0 以降（ベータ版の API）に関するものです。

## 前提条件##prerequisites

* LevelPlay SDK がアプリケーションに正しく統合されていることを確認します。インテグレーションの概要は[こちら](/grow/levelplay/sdk/unity/package-integration.md)です。
* LevelPlay 初期化 API を使用して SDK を初期化していることを確認します。
* LevelPlay ダッシュボードで AdUnitID を見つけます。詳細については[、こちら](/grow/levelplay/platform/get-started/ad-units.md)を参照してください。

## バナー広告オブジェクトの作成、サイズと位置の設定##create-banner-ad-object-set-size-and-position

バナー広告オブジェクトの作成は、**OnInitSuccess** コールバックの受信後に行う必要があります。

```csharp
// Create the banner object and set the ad unit id 
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(bannerAdUnitId);
```

注： `LevelPlayBannerAd` コンストラクターは、任意の `Config` パラメーターもサポートしています。

```csharp
// Use optional Config parameter
LevelPlayBannerAd(string adUnitId, Config config = null)
```

特別な設定が必要ない場合は、`Config`パラメーターを省略して`adUnitId`のみを渡すことができます。バナーはデフォルト属性で作成されます。

| 属性              | デフォルト              |
| --------------- | ------------------ |
| サイズ             | Banner             |
| 位置              | BottomCenter       |
| displayOnLoad   | true               |
| respectSafeArea | false (Android のみ) |

バナーパラメータをカスタマイズするには、`Config` Builder を使用します。

```csharp
var configBuilder = new LevelPlayBannerAd.Config.Builder();
configBuilder.SetSize(LevelPlayAdSize.LARGE);
configBuilder.SetPosition(LevelPlayBannerPosition.TopCenter);
configBuilder.SetDisplayOnLoad(true);
configBuilder.SetRespectSafeArea(true); // Only relevant for Android
configBuilder.SetPlacementName("bannerPlacement");
configBuilder.SetBidFloor(1.0); // Minimum bid price in USD
var bannerConfig = configBuilder.Build();

bannerAd = new LevelPlayBannerAd(bannerAdUnitId, bannerConfig);
```

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

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

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

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

* LevelPlay SDK 8.8.0 以降では、バナーをロードする前に以下の使用して返される適応型バナーの幅と高ささを決定できます。

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.CreateAdaptiveAdSize();
int width = adSize.Width;
int height = adSize.Height;
```

* 8.8.0 未満の LevelPlay SDK の場合:

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.CreateAdaptiveAdSize();
```

\*\*特定のバナーサイズ：\*\*このオプションでは、特定のバナーサイズを設定できます。バナー、LARGE、MEDIUM＿矩形。

```csharp
LevelPlayAdSize adSize = LevelPlayAdSize.BANNER;
```

### バナー位置##banner-positions

画面にバナーを表示するデフォルト位置は **BottomCenter** です。以下は、サポートされているすべてのポジションの完全なリストです。

* TopLeft
* TopCenter
* TopRight
* CenterLeft
* 中央
* CenterRight
* BottomLeft
* BottomCenter
* BottomRight

```csharp
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(adUnitId, LevelPlayAdSize.BANNER, LevelPlayBannerPosition.TopLeft);
```

また、dp で定義された x および y 値を持つ `LevelPlayBannerPosition` オブジェクトを作成して、画面上の特定の （x， y） 座標にバナーを配置することもできます。

```csharp
LevelPlayBannerPosition position = new LevelPlayBannerPosition(new Vector2(x, y));
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd(adUnitId, adSize, position, placementName, displayOnLoad, respectSafeArea);
```

### Placements##placements

バナーの[プレースメントは](/grow/levelplay/platform/settings/placements.md)、レポートの目的でのみサポートされます。リロードされたすべての広告に影響を与えるように、`LoadAd`の前に設定する必要があります。

```csharp
// Set the placement name
LevelPlayBannerAd bannerAd = new LevelPlayBannerAd("bannerAdUnitId", LevelPlayAdSize.BANNER, placementName:"placementName");
```

## バナーイベントの実装##implement-the-banner-events

コード内の `LevelPlayBannerAd` イベントをリッスンします。SDK は、以下にリストされているすべての可能なイベントを通知します。

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

```csharp
// Register to the events 
bannerAd.OnAdLoaded += BannerOnAdLoadedEvent;
bannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;
bannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;
bannerAd.OnAdDisplayFailed += BannerOnAdDisplayFailedEvent;
bannerAd.OnAdClicked += BannerOnAdClickedEvent;
bannerAd.OnAdCollapsed += BannerOnAdCollapsedEvent;
bannerAd.OnAdLeftApplication += BannerOnAdLeftApplicationEvent;
bannerAd.OnAdExpanded += BannerOnAdExpandedEvent;

// Implement the events
void BannerOnAdLoadedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) {}
void BannerOnAdClickedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error) {}
void BannerOnAdCollapsedEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdLeftApplicationEvent(LevelPlayAdInfo adInfo) {}
void BannerOnAdExpandedEvent(LevelPlayAdInfo adInfo) {}
```

### LevelPlay 広告情報##levelplay-ad-info

`LevelPlayAdInfo`パラメーターには、ロードされた広告に関する情報が含まれます。詳細については[、こちら](/grow/levelplay/sdk/unity/levelplay-listener-adinfo-integration.md)を参照してください。

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

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

```csharp
bannerAd.LoadAd();
```

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

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

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

```csharp
// Pause refresh
bannerAd.PauseAutoRefresh();
// Resume refresh
bannerAd.ResumeAutoRefresh();
```

bannerAd.HideAd();

## バナーの非表示と表示##hide-and-show-banners

バナーコンストラクターの一部として、バナーを背景でロードし、必要な場合にのみ画面に表示することができます。ロード後の広告の可視性をコントロールするには、次の API を使用できます。

> **Note:**
>
> 広告が非表示の場合、自動更新がオンになっている限り、背景グラウンドで更新が継続されます。

```csharp
// Show ad 
bannerAd.ShowAd(); 
// Hide ad 
bannerAd.HideAd();
```

## ディスプレイアウト (Android のみ)##display-cutouts-(android-only)

Android デバイスのディスディスプレイアウトは、カメラ、センサー、スピーカーなどの必須コンポーネントのために予約済みされた領域です。一般的に、スマートフォンや端ィスプレイを備えたデバイスで使用されます。この切り抜きによってゲームビューが制限され、画面上のバナーの配置に影響が及ぶ可能性があります。バナー広告と表示されるカットアウトが重複しないようにするには、`LevelPlayBannerAd`を作成し、`respectSafeArea`を true に設定します。

Googleのディスプレイカットアウトソリューションの詳細については、[こちら](https://developer.android.com/guide/topics/display-cutout)を参照してください。

Android カットアウトをサポートするには、`Config` を使用してバナーオブジェクトを作成し、 respectSafeArea の値を true に設定します （デフォルト値は false）。

```csharp
var configBuilder = new LevelPlayBannerAd.Config.Builder();
configBuilder.SetRespectSafeArea(true); // Only relevant for Android
var bannerConfig = configBuilder.Build();

bannerAd = new LevelPlayBannerAd(bannerAdUnitId, bannerConfig);
```

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

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

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

```csharp
bannerAd.DestroyAd();
```

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

適応型バナーサイズを使用してバナー広告を作成およびロードする例を示します。

```csharp
public class BannerAdSample {
  private LevelPlayBannerAd bannerAd;
  void CreateBannerAd() {
    // Create ad configuration - optional
    var adConfig = new LevelPlayBannerAd.Config.Builder()
      .SetSize(LevelPlayAdSize.BANNER)
      .SetPlacementName("placementName")
      .SetPosition(LevelPlayBannerPosition.BottomCenter)
      .SetDisplayOnLoad(true)
      .SetRespectSafeArea(true)
      .Build();
        
    // Create banner instance
    bannerAd = new LevelPlayBannerAd("bannerAdUnitId", adConfig);
    // Subscribe BannerAd events
    bannerAd.OnAdLoaded += BannerOnAdLoadedEvent;
    bannerAd.OnAdLoadFailed += BannerOnAdLoadFailedEvent;
    bannerAd.OnAdDisplayed += BannerOnAdDisplayedEvent;
    bannerAd.OnAdDisplayFailed += BannerOnAdDisplayFailedEvent;
    bannerAd.OnAdClicked += BannerOnAdClickedEvent;
    bannerAd.OnAdCollapsed += BannerOnAdCollapsedEvent;
    bannerAd.OnAdLeftApplication += BannerOnAdLeftApplicationEvent;
    bannerAd.OnAdExpanded += BannerOnAdExpandedEvent;
  }
  public void LoadBannerAd() {
    //Load the banner ad 
    bannerAd.LoadAd();
  }
  public void ShowBannerAd() {
    //Show the banner ad, call this method only if you turned off the auto show when you created this banner instance.
    bannerAd.ShowAd();
  }
  public void HideBannerAd() {
    //Hide banner
    bannerAd.HideAd();
  }
  public void DestroyBannerAd() {
    //Destroy banner
    bannerAd.DestroyAd();
  }
  //Implement BannerAd Events
  public void BannerOnAdLoadedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLoadFailedEvent(LevelPlayAdError ironSourceError) {}
  public void BannerOnAdClickedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdDisplayFailedEvent(LevelPlayAdInfo adInfo, LevelPlayAdError error){}
  public void BannerOnAdCollapsedEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdLeftApplicationEvent(LevelPlayAdInfo adInfo) {}
  public void BannerOnAdExpandedEvent(LevelPlayAdInfo adInfo) {}
}
```

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

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

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

これで、アプリケーションでバナーを使用できるようになりました。[インテグレーションテストスイート](/grow/levelplay/sdk/unity/integration-test-suite.md)とのインテグレーションを確認します。

エディター内でインテグレーションをテストできます。Unity エディターで模擬広告をプレビューする方法については、[プレビュー模擬広告ガイド](/grow/levelplay/sdk/unity/preview-mock-ads-in-editor.md)を参照してください。

次のステップとは?
インテグレーションガイドに従って、追加のバナー広告ネットワークのインテグレーションや追加の広告フォーマットの設定を行います。

* [メディエーションネットワークの追加](/grow/levelplay/sdk/unity/mediation-networks.md)
* [リワード広告](/grow/levelplay/sdk/unity/rewarded-ad-integration-package.md)
* [インタースティシャル広告](/grow/levelplay/sdk/unity/interstitial-integration.md)
