バナー広告

バナー広告は、画面上の一部分に表示される長方形の画像またはテキストの広告です。アプリの操作中に画面に表示され、一定の時間が経過すると自動的に更新されます。モバイル広告を初めてお使いの場合は、この広告から始めるのが最適です。

このガイドでは、AdMob のバナー広告を Unity アプリに統合する方法について説明します。コード スニペットと設定方法のほか、バナーの適切なサイズに関する情報や他の関連情報へのリンクも紹介します。

前提条件

スタートガイドの手順を完了し、Unity アプリに Google Mobile Ads Unity プラグインがインポート済みになっている必要があります。

BannerView を作成する

バナーを表示するための最初のステップとして、GameObject に追加された C# スクリプトに BannerView オブジェクトを作成します。

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    …
    public void Start()
    {
        #if UNITY_ANDROID
            string appId = "ca-app-pub-3940256099942544~3347511713";
        #elif UNITY_IPHONE
            string appId = "ca-app-pub-3940256099942544~1458002511";
        #else
            string appId = "unexpected_platform";
        #endif

        // Initialize the Google Mobile Ads SDK.
        MobileAds.Initialize(appId);

        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

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

BannerView のコンストラクタには、次のパラメータがあります。

  • adUnitId - BannerView が広告を読み込む AdMob 広告ユニットの ID です。
  • AdSize - 使用する AdMob 広告のサイズです(詳細についてはバナーサイズをご覧ください)。
  • AdPosition - バナー広告を配置する位置です。AdPosition 列挙型は、広告の位置として有効な値を示します。

プラットフォームに応じて異なる広告ユニットが使用されることにご留意ください。iOS で広告をリクエストするには iOS 広告ユニットを使用し、Android でリクエストするには Android 広告ユニットを使用する必要があります。

(省略可)カスタムの広告の位置

BannerView が画面上で配置される場所を、AdPosition 値で指定される位置よりも柔軟に管理するには、x 座標と y 座標のパラメータを持つ BannerView コンストラクタを使用します。

// Create a 320x50 banner ad at coordinate (0,50) on screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.Banner, 0, 50);

BannerView の左上の位置は、コンストラクタに渡される x 値と y 値で指定されます。元の位置は画面の左上となります。

(省略可)カスタムの広告サイズ

広告には AdSize 定数値を使用できるほか、カスタムのサイズを指定することもできます。

AdSize adSize = new AdSize(250, 250);
BannerView bannerView = new BannerView(adUnitId, adSize, AdPosition.Bottom);

テストでは常にテスト広告を使用する

上記のサンプルコードに含まれる広告ユニット ID を使って自由に広告をリクエストできます。この ID は、どのリクエストに対しても実際の広告ではなくテスト広告を返すようになっている特別な ID で、安全に使用できます。

ただし、AdMob 管理画面にアプリを登録して、アプリで使用する独自の広告ユニット ID を作成したら、開発時に端末をテスト端末として明示的に設定する必要があります。これは非常に重要です。実際の広告でテストすることは(広告をタップしなくても)AdMob ポリシーに違反しているため、アカウントが停止される可能性があります。開発時に常にテスト広告を取得できるようにする方法については、テスト広告をご覧ください。

広告を読み込む

BannerView がインスタンス化されたら、次に広告を読み込みます。これは、BannerView クラスの loadAd() メソッドで行います。それには、AdRequest 引数を使用して、1 つの広告リクエストに関するランタイムの情報(ターゲティング情報など)を保持する必要があります。

広告を読み込む方法の例を次に示します。

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;
    …

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {
        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

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

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);
    }
}

これで、アプリで AdMob のバナー広告を表示できるようになりました。

広告イベント

広告の動作をより細かくカスタマイズするには、広告のライフサイクルで生じるさまざまなイベント(読み込み、開始、終了など)を考慮します。以下に示すように、適切な EventHandler にデリゲートを登録して、これらのイベントをリッスンします。

...
using GoogleMobileAds.Api;
...
public class GoogleMobileAdsDemoScript : MonoBehaviour
{
    private BannerView bannerView;

    public void Start()
    {
        this.RequestBanner();
    }

    private void RequestBanner()
    {

        #if UNITY_ANDROID
            string adUnitId = "ca-app-pub-3940256099942544/6300978111";
        #elif UNITY_IPHONE
            string adUnitId = "ca-app-pub-3940256099942544/2934735716";
        #else
            string adUnitId = "unexpected_platform";
        #endif

        bannerView = new BannerView(adUnitId, AdSize.Banner, AdPosition.Top);

        // Called when an ad request has successfully loaded.
        bannerView.OnAdLoaded += HandleOnAdLoaded;
        // Called when an ad request failed to load.
        bannerView.OnAdFailedToLoad += HandleOnAdFailedToLoad;
        // Called when an ad is clicked.
        bannerView.OnAdOpening += HandleOnAdOpened;
        // Called when the user returned from the app after an ad click.
        bannerView.OnAdClosed += HandleOnAdClosed;
        // Called when the ad click caused the user to leave the application.
        bannerView.OnAdLeavingApplication += HandleOnAdLeavingApplication;

        // Create an empty ad request.
        AdRequest request = new AdRequest.Builder().Build();

        // Load the banner with the request.
        bannerView.LoadAd(request);
    }

    public void HandleOnAdLoaded(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLoaded event received");
    }

    public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
    {
        MonoBehaviour.print("HandleFailedToReceiveAd event received with message: "
                            + args.Message);
    }

    public void HandleOnAdOpened(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdOpened event received");
    }

    public void HandleOnAdClosed(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdClosed event received");
    }

    public void HandleOnAdLeavingApplication(object sender, EventArgs args)
    {
        MonoBehaviour.print("HandleAdLeavingApplication event received");
    }
}

OnAdFailedToLoad イベントには、特別なイベント引数が含まれます。このイベントは、エラーについて記述する Message を含む HandleAdFailedToLoadEventArgs のインスタンスを渡します。

public void HandleOnAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
  MonoBehaviour.print("Banner failed to load: " + args.Message);
  // Handle the ad failed to load event.
};
広告イベント説明
OnAdLoaded OnAdLoaded イベントは広告の読み込みが完了したときに実行されます。
OnAdFailedToLoad OnAdFailedToLoad イベントは広告の読み込みに失敗したときに呼び出されます。Message パラメータは発生した障害のタイプを示します。
OnAdOpening ユーザーが広告をタップしたときに呼び出されるメソッドです。分析パッケージを使用してクリックスルーをトラッキングしている場合は、ここで記録することをおすすめします。
OnAdClosed ユーザーが広告のリンク先 URL にアクセスした後でアプリに戻るときに呼び出されるメソッドです。一時停止中のアクティビティを再開したり、アプリを操作可能な状態にするために必要な他の動作を実行したりするには、このメソッドを使用します。
OnAdLeavingApplication ユーザーが別のアプリ(Google Play ストアなど)を起動して、現在のアプリをバックグラウンドで実行すると、このメソッドが onAdOpened の後に呼び出されます。

サポートされているバナーサイズは次のとおりです。

サイズ(幅×高さ) 説明 対応端末 AdSize の定数値
320×50 標準のバナー スマートフォン、タブレット BANNER
320×100 バナー(大) スマートフォン、タブレット LARGE_BANNER
300×250 IAB レクタングル(中) スマートフォン、タブレット MEDIUM_RECTANGLE
468×60 IAB フルサイズ バナー タブレット FULL_BANNER
728×90 IAB ビッグバナー タブレット LEADERBOARD
画面の幅×32|50|90 スマートバナー スマートフォン、タブレット SMART_BANNER

スマートバナー

スマートバナーは、あらゆる画面サイズの端末で、画面をどの向きにしていても横幅いっぱいに広告を表示できる広告ユニットです。スマートバナーを使用すると、各種の端末でいっそう画面の細分化が進んでも、そのときの端末の向きによって画面の幅を「スマート」に検知し、そのサイズの広告を表示して対応できます。

スマートバナーで表示される広告の高さは、次の 3 つのいずれかになります。

広告の高さ 画面の高さ
32 dp 400 dp 以下
50 dp 400 dp 超、720 dp 以下
90 dp 720 dp 超

通常では、スマートフォン向けのスマートバナーの高さは縦向きで 50 dp、横向きで 32 dp になります。タブレットの場合、通常ではどちらの向きでも高さが 90 dp になります。

イメージ広告を割り当てられたスペース全体に表示すると余白が生じる場合は、画像が中央寄せになり、両側のスペースは塗りつぶされます。

スマートバナーを使用するには、広告サイズとして AdSize.SmartBanner を指定します(BannerView の作成時)。次に例を示します。

// Create a Smart Banner at the top of the screen.
BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Top);

バナー広告を消去する

BannerView の使用を終了した場合は、参照を破棄する前に必ず Destroy() メソッドを呼び出してください。

bannerView.Destroy();

これにより、オブジェクトが使用されなくなり、占有されていたメモリを再利用できることがプラグインに通知されます。このメソッドを呼び出さないと、メモリリークが発生します。

その他の参考情報

サンプル

今後の流れ

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。