Google Mobile Ads SDK についてのフィードバックをお寄せください。年次アンケート

バナー広告

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

このガイドでは、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 は、どのリクエストに対しても実際の広告ではなくテスト広告を返すように設定されており、安全に使用できます。

ただし、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();

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

その他の参考情報

サンプル

今後の流れ