バナー広告

スタートガイドでは、SDK を使用してテスト用のバナー広告を表示する方法を説明しました。このガイドでは、バナー広告の高度なカスタマイズ機能について説明します。

バナー広告のカスタマイズの実装について確認するには、Android API デモアプリをダウンロードしてください。

API デモをダウンロードする

次の広告フォーマットがサポートされています。

サイズ(幅×高さ) 説明 対応 広告サイズの定数値
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

SDK は、リクエストする PublisherAdView がインスタンス化された際のサイズをリクエストします。端末の画面に広告を表示するスペースが足りない場合は、何も表示されません。

スマートバナー

スマートバナーは、あらゆる画面サイズの端末で、画面をどの向きにしていても横幅いっぱいに広告を表示できる広告ユニットです。端末の向きに合わせて画面の横幅を認識し、広告をそのサイズに合わせて表示することで、端末の画面サイズの細分化が進んでも対応できます。

スマートバナーで表示される広告の高さは、次の 3 つのいずれかになります。単位は、dp(密度非依存ピクセル)です。

  • 32: 端末の画面の高さが 400 以下
  • 50: 端末の画面の高さが 400 より大きく 720 以下
  • 90: 端末の画面の高さが 720 より大きい

スマートフォンなど一部の端末では、向きによって画面の高さが変わります。通常の場合、スマートフォンでは縦向きが全幅×50dp、横向きが全幅×32dp となります。タブレットではどちらの向きでも全幅×90dp です。

スペース全体にイメージ広告を表示しようとすると余白ができる場合は、画像が中央に配置され、両側のスペースは塗りつぶされます。

スマートバナーを使用するには、広告サイズに定数値 SMART_BANNER を指定します。

PublisherAdView adView = new PublisherAdView(this);
adView.setAdSizes(AdSize.SMART_BANNER);

カスタム広告ユニット

DoubleClick For Publishers(DFP)では、標準の AdMob 広告ユニットに加えて、任意のサイズの広告ユニットをアプリ内に表示できます。広告リクエストで定義する広告サイズ(幅、高さ)は、アプリに表示される広告ビュー(PublisherAdView)のサイズと一致している必要があります。

例:

// Define custom AdSize of 250x250 for PublisherAdView

AdSize customAdSize = new AdSize(250, 250);
PublisherAdView adView = new PublisherAdView(this);
adView.setAdSizes(customAdSize);

カスタム広告ユニットを Android API デモアプリで実装するには、DFP で複数の広告サイズに対応する例をご覧ください。

複数の広告サイズ

DFP では、PublisherAdView に表示する広告サイズを複数指定できます。SDK でこの機能を使用するには、まず広告ユニットを対象とする広告申込情報を作成し、サイズが異なる複数のクリエイティブに関連付けます。

アプリで、複数の AdSize パラメータが setAdSizes に渡されるようにします。

PublisherAdView adView = new PublisherAdView(this);
adView.setAdSizes(AdSize.BANNER, new AdSize(120, 20), new AdSize(250, 250));

更新時に PublisherAdView のサイズが変化した場合、レイアウトが自動的に調整されるようになります。

対応する広告サイズをアプリでいつでも変更できるようにするには、広告サイズを新しく指定して setAdSizes を呼び出すようにします。

// Drop support for 120x20 ad size.
adView.setAdSizes(new AdSize(250, 250), AdSize.BANNER);

デフォルトでは、新しい広告が返されるまで、PublisherAdView は最初のパラメータで渡されたサイズになります。

Android API デモアプリで複数の広告サイズに対応するには、DFP で複数の広告サイズに対応する例をご覧ください。

インプレッションの手動カウント

インプレッションの記録について特別な条件がある場合は、インプレッションの ping を DFP に手動で送信できます。手動でカウントするには、広告を読み込む前に PublisherAdRequest で手動インプレッションを有効にします。

PublisherAdRequest adRequest = new PublisherAdRequest.Builder()
    .setManualImpressionsEnabled(true)
    .build();

広告が正常に返され、画面に表示されていることを確認したら、インプレッションを手動でカウントします。

PublisherAdView.recordManualImpression();

アプリ内イベント

アプリ内イベントを利用することで、アプリのコードにメッセージを送信する広告を作成できます。アプリは、送信されたメッセージに基づいて、処理を行います。

DFP のアプリ内イベントをリッスンするには、AppEventListener を使用します。DFP のアプリ内イベントは、AdListeneronAdLoaded() が呼び出される前でも、広告ライフサイクルの途中で発生する場合があります。

public interface AppEventListener {
  void onAppEvent(String name, String info);
}

広告でアプリ内イベントが発生すると、void onAppEvent(String name, String info) が呼び出されます。

このインターフェースは、アクティビティやその他のオブジェクトによって次のように実装できます。

import com.google.android.gms.ads.doubleclick.*;

public class BannerExample extends Activity implements AppEventListener {
}

次に PublisherAdView に渡されます。

adView.setAppEventListener(this);

アプリ内イベントに応じてアプリの背景色が指定した色に変わるようにする方法は次のとおりです。

@Override
public void onAppEvent(String name, String info) {
  if ("color".equals(name)) {
    if ("green".equals(info) {
      // Set background color to green.
    } else if ("blue".equals(info) {
      // Set background color to blue.
    } else {
      // Set background color to black.
    }
  }
}

また、対応するクリエイティブは次のとおりです。これは、色に関するアプリ内イベント メッセージをリスナーに送信します。

<html>
<head>
  <script src="//media.admob.com/api/v1/google_mobile_app_ads.js"></script>
  <script>
    // Send a color=green event when ad loads.
    admob.events.dispatchAppEvent("color", "green");

    handleClick = function() {
      // Send a color=blue event when ad is clicked.
      admob.events.dispatchAppEvent("color", "blue");
    };
  </script>
  <style>
    #ad {
      width: 320px;
      height: 50px;
      top: 0px;
      left: 0px;
      font-size: 24pt;
      font-weight: bold;
      position: absolute;
      background: black;
      color: white;
      text-align: center;
    }
  </style>
</head>
<body>
  <div id="ad" onClick="handleClick()">Carpe diem!</div>
</body>
</html>

Android API デモアプリでアプリ内イベントを利用するには、DFP でアプリ内イベントに対応する例をご覧ください。

広告のライフサイクル イベントのコールバック

広告のライフサイクル イベント(リクエストの失敗やクリックスルーなど)をトラッキングするには、com.google.android.gms.ads.AdListener を拡張する PublisherAdView.setAdListener にオブジェクトを渡します。

public abstract class AdListener {
  public void onAdLoaded();
  public void onAdFailedToLoad(int errorCode);
  public void onAdOpened();
  public void onAdClosed();
  public void onAdLeftApplication();
}

AdListener を拡張するクラスは別途定義できますが、AdListener オブジェクトをインラインで埋め込こともできます。

adView.setAdListener(new AdListener() {
  @Override
  public void onAdOpened() {
    // Save app state before going to the ad overlay.
  }
});

AdListener は、広告のライフサイクル イベントのすべてに対し、デフォルトで空実装を行います。必要な操作は、実装する広告イベントをオーバーライドするだけです。

public void onAdLoaded()
広告が表示された場合に呼び出されます。
public void onAdFailedToLoad(int errorCode)

広告リクエストが失敗した場合に呼び出されます。エラーコードは通常、次のいずれかになります。

  • AdRequest.ERROR_CODE_INTERNAL_ERROR
  • AdRequest.ERROR_CODE_INVALID_REQUEST
  • AdRequest.ERROR_CODE_NETWORK_ERROR
  • AdRequest.ERROR_CODE_NO_FILL
public void onAdOpened()

広告からオーバーレイを開いて画面全体が覆われた場合に呼び出されます。

public void onAdClosed()

ユーザーが広告をクリックし、アプリに戻ろうとした場合に呼び出されます。

public void onAdLeftApplication()

広告からアプリを終了した場合(ブラウザに移動する場合など)に呼び出されます。

Android API デモアプリで広告リスナーのメソッドを実装するには、広告リスナーのサンプルをご覧ください。

次のステップ

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

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