# Android でのバナー広告の実装

> Android アプリケーションにバナー広告を実装します。バナービューオブジェクトを作成し、レイアウトに表示し、リスナーを使用して広告イベントを管理します。

バナー広告には、特定のタイプのバナー専用プレースメントが必要です。

他のビューと同様に、バナービューオブジェクトはビュー階層に配置できます。これにより、各バナーインスタンスの位置をカスタマイズしたり、複数のバナーを表示したりできます。

> **Note:**
>
> app-ads.txt は、詐欺に対処し広告エコシステムに透明性をもたらす IAB イニシアチブです。説明に従って [app-ads.txt ファイルを設定](/monetization/dashboard/app-ads-txt/set-up-app-ads-txt.md) してください。そうしないと、バナーの需要が大幅に減るおそれがあります。

## スクリプトの実装##script-implementation

以下のスクリプトサンプルは、画面に 2 つのバナー広告と、それらをテストするボタンを表示するための実装例です。

この例では、複数のバナービューオブジェクトに単一のリスナーを使用しています。バナービューオブジェクトごとに異なるリスナーを使用することもできます。

### MREC バナー形式の実装##implementing-the-mrec-banner-format

アプリでミディアムレクタングル (MREC) サイズの広告フォーマットを表示するには、300 x 250、300 x 300、450 x 450 など、適切なサイズを使用する必要があります。具体的には、300 x 250 の MREC バナー広告の場合、以下のコード例のサイズを

```java
new UnityBannerSize(320, 50)
```

以下の調整されたサイズに置き換えます。

```java
new UnityBannerSize(300, 250)
```

## バナー広告の例##banner-ad-example

`BannerShowListener` を構築してインプレッション、クリック、表示失敗のイベントを処理し、プレースメント ID と `BannerSize` とともに `BannerConfiguration.Builder` に渡します。`BannerSize` は、アンカーレイアウトおよびインラインレイアウトの固定サイズまたはアダプティブサイズをサポートしています。必要に応じて、入札用のメディエーション メタデータと広告マークアップを含め、ビルドした設定と `LoadListener` を指定して `BannerAd.load()` を呼び出します。読み込みに成功したら、`ad.getView()` を介してバナーの `View` を取得し、レイアウトに挿入します。

1. **Java**

   ```java
     BannerShowListener showListener = new BannerShowListener()
     {
         @Override
         public void onImpression(@NonNull BannerAd ad)                                     
         { /* impression */ }

         @Override
         public void onClicked(@NonNull BannerAd ad)                                        
         { /* クリック */ }

         @Override
         public void onFailedToShow(@NonNull BannerAd ad, @NonNull UnityAdsError error)     
         { /* 表示失敗 */ }
     };

     BannerConfiguration.Builder builder =
             new BannerConfiguration.Builder( placementId, new BannerSize( 320, 50 ), showListener )
                     .withMediationInfo( createMediationInfo() );
     if ( AppLovinSdkUtils.isValidString( bidResponse ) )
     {
         builder.withAdMarkup( bidResponse );
     }

     BannerAd.load( builder.build(), new LoadListener<BannerAd>()
     {
         @Override
         public void onAdLoaded(@Nullable BannerAd ad, @Nullable UnityAdsError error)
         {
             if ( error == null )
             {
                 loadedBannerAd = ad;
                 listener.onAdViewAdLoaded( ad.getView() ); // retrieve view via getView()
             }
             else
             {
                 // failure
             }
         }
     } );
   ```

2. **Kotlin**

   ```kotlin
     val showListener = object :BannerShowListener {
     override fun onImpression(ad:BannerAd)                         
     { /* impression */ }
     override fun onClicked(ad:BannerAd)                            
     { /* クリック */ }
     override fun onFailedToShow(ad:BannerAd, error:UnityAdsError) 
     { /* 表示失敗 */ }
   }

   val builder = BannerConfiguration.Builder(placementId, BannerSize(320, 50), showListener)
       .withMediationInfo(createMediationInfo())

   if (AppLovinSdkUtils.isValidString(bidResponse)) {
       builder.withAdMarkup(bidResponse)
   }

   BannerAd.load(builder.build(), object :LoadListener<BannerAd> {
       override fun onAdLoaded(ad:BannerAd?, error:UnityAdsError?) {
           if (error == null) {
               loadedBannerAd = ad
               listener.onAdViewAdLoaded(ad.getView()) // retrieve view via getView()
           } else {
               // failure
           }
       }
   })
   ```

**次のステップ**: [収益化戦略](/monetization/getting-started/monetization-strategy.md) ガイドを確認するか、[実装をテスト](/ads-android/4.19.0/sdk-integration/test-integration.md) します。
