【Unity】Admobバナーのサンプルコードを用いた場合に、バナーが表示されない場合の対処法 【エラー】

# はじめに
Admobの初期設定が終わり、いざAdmobバナーのサンプルコードをそのまま用いて実装しようとしても、エラーが発生するか、もしくはバナーが表示されない場合があります。
本記事では、[こちらのURL](https://developers.google.com/admob/unity/quick-start?hl=ja)の初期設定が終わった方に向けて、[このサンプルコード](https://developers.google.com/admob/unity/banner?hl=ja)を用いてバナーを実装する際の、正しい実装方法と注意点について説明します。
（本記事は、2024年4月の記事です。）

:::note warn
本記事では、注意点はこのように黄色の枠で囲っています
:::

# Admobバナーのサンプルコードの実装方法
基本的に、[このサンプルコード](https://developers.google.com/admob/unity/banner?hl=ja)からコピペで実装していきます。

## 1. usingを追加し、Start()メソッドをコピペする
```C#
using GoogleMobileAds;
using GoogleMobileAds.Api;
```
```C#
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
    }
}
```
:::note warn
ここで、クラス名はファイル名と一致していれば何でも構いません。
:::
## 2. クラス内にメソッドを追加する

**・バナービューを作成する**
```C#
// These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
  private string _adUnitId = "unused";
#endif

  BannerView _bannerView;

  /// <summary>
  /// Creates a 320x50 banner view at top of the screen.
  /// </summary>
  public void CreateBannerView()
  {
      Debug.Log("Creating banner view");

      // If we already have a banner, destroy the old one.
      if (_bannerView != null)
      {
          DestroyAd();
      }

      // Create a 320x50 banner at top of the screen
      _bannerView = new BannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
  }
```
:::note warn
ここで、DestroyAdというメソッドは後にも先にも存在しないので、以下のコードに修正してください。
```C#
/// DestroyAd();
_bannerView.Destroy();
_bannerView = null;
```
:::

**・バナー広告を読み込む**
```C#
/// <summary>
/// Creates the banner view and loads a banner ad.
/// </summary>
public void LoadAd()
{
    // create an instance of a banner view first.
    if(_bannerView == null)
    {
        CreateBannerView();
    }

    // create our request used to load the ad.
    var adRequest = new AdRequest();

    // send the request to load the ad.
    Debug.Log("Loading banner ad.");
    _bannerView.LoadAd(adRequest);
}
```

:::note warn
CreateBannerViewメソッドのみだと空のオブジェクトが生成されるだけので、**LoadAdメソッドは絶対に追加するようにしてください**。
:::

## 3. Start()にメソッドを追加する
クラス内にメソッドを追加しただけではそれらのメソッドは呼び出されないので、Startで呼び出しましょう。
```C#
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
        
        // 以下にコードを追加
        CreateBannerView();
        LoadAd();
    }
}
```
:::note warn
**繰り返しになりますが、ちゃんとLoadAdも追加しましょう**
:::

# 最終的なコード
最終的なコードはこちらです。
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using GoogleMobileAds;
using GoogleMobileAds.Api;

public class GoogleMobileAdsDemoScript : MonoBehaviour
{

    public void Start()
    {
        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize((InitializationStatus initStatus) =>
        {
            // This callback is called once the MobileAds SDK is initialized.
        });
        CreateBannerView();
        LoadAd();
    }

    // These ad units are configured to always serve test ads.
#if UNITY_ANDROID
  private string _adUnitId = "ca-app-pub-3940256099942544/6300978111";
#elif UNITY_IPHONE
  private string _adUnitId = "ca-app-pub-3940256099942544/2934735716";
#else
    private string _adUnitId = "unused";
#endif

    BannerView _bannerView;

    /// <summary>
    /// Creates a 320x50 banner view at top of the screen.
    /// </summary>
    public void CreateBannerView()
    {
        Debug.Log("Creating banner view");

        // If we already have a banner, destroy the old one.
        if (_bannerView != null)
        {
            _bannerView.Destroy();
            _bannerView = null;
        }

        // Create a 320x50 banner at top of the screen
        _bannerView = new BannerView(_adUnitId, AdSize.Banner, AdPosition.Top);
    }


    /// <summary>
    /// Creates the banner view and loads a banner ad.
    /// </summary>
    public void LoadAd()
    {
        // create an instance of a banner view first.
        if (_bannerView == null)
        {
            CreateBannerView();
        }

        // create our request used to load the ad.
        var adRequest = new AdRequest();

        // send the request to load the ad.
        Debug.Log("Loading banner ad.");
        _bannerView.LoadAd(adRequest);
    }

}

```

# まとめ
本記事では、Admobバナーの[サンプルコード](https://developers.google.com/admob/unity/banner?hl=ja)を実装する際の注意点について説明しました。
この方法で上手くいかなかった方がいればコメントお願いします。