Android ガイドライン | バナー広告

バナー広告は画像 (静止画またはアニメーション) から構成され、ユーザーを Web サイトまたは関連するアプリ ストアに導くハイパーリンクを備えています。全てのタイプのアプリはバナー広告を使用して収益化が可能です。

以下の手順に従い、バナー広告での収益化を開始してください。

バナー広告の設定

  1. バナー広告を表示するには、バナー プレースメント ID が必要です。
  2. アプリを追加してから、BANNER ADを選択して広告タイプバナー向けのプレースメントを作成します。
  3. バナープレースメントの作成に成功したら、プレースメントIDが使用可能になります。

バナー広告のアプリへの追加

バナー広告の作成

メソッド 1: XMLレイアウトファイルにバナーを追加します。

XMLでレイアウトファイルにバナー広告を追加し、その広告を通常のビューで参照するようにコードから参照します。

以下の例では、XMLでのバナー広告の追加方法を示しています。InMobi広告のネームスペースは上位レベルのレイアウトエレメントに追加する必要がある点にご注意ください。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.inmobi.ads"
    xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.inmobi.samples.BannerXMLActivity">
    <TextView android:text="@string/banner_xml_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <com.inmobi.ads.InMobiBanner
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:id="@+id/banner"
        ads:placementId="1431977751489005"
        ads:refreshInterval="60"
    />
</LinearLayout>
	

注:バナーXMLの統合の場合、Android SDK 720以降を使用しているサイト運営者は、次のように placementId タグに「plid-」を追加する必要があります。

ads:placementId = "plid-1431977751489005"
	

これで、以下の様に、コードからバナーを参照できます。

InMobiBanner bannerAd = (InMobiBanner)findViewById(R.id.banner);
	

以下のセクションで示すように、バナーインスタンスを生成し、広告をリクエストします。

広告をリクエストする前に、メインアクティビティかバナー広告を表示しているアクティビティで InMobiSdk.init(Context, String)メソッドを呼び出してInMobi SDKを初期化してください。

メソッド 2:コードでのバナーの追加

InMobiBannerのインスタンスを作成します。

InMobiBanner bannerAd = new InMobiBanner(BannerAdsActivity.this, 1468078426600L);
	

注意:

  • InMobiBannerクラスはスレッドセーフではありません。バナーインスタンスはUIスレッド上で作成しなければなりません。
  • 同様に、このインスタンスのすべてのメソッドはUIスレッド上で呼び出す必要があります。そうしないと予測不能の動作が発生して、InMobiでの収益化に影響を及ぼす恐れがあります。

バナー広告を作成したら、その広告を以下の様にViewの階層に追加します。

RelativeLayout adContainer = (RelativeLayout) findViewById(R.id.ad_container);
RelativeLayout.LayoutParams bannerLp = new RelativeLayout.LayoutParams(640, 100);
bannerLp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
bannerLp.addRule(RelativeLayout.CENTER_HORIZONTAL);
adContainer.addView(bannerAd, bannerLayoutParams);
	

注意: バナー広告のレイアウトパラメーターを設定する際は、ピクセル単位でバナービューの寸法を指定する必要があります。また、バナー広告のレイアウトパラメーターとしてWRAP_CONTENTを提供するのはプログラミングエラーです。この制約は XMLレイアウトファイルでバナーを作成していても、コードでバナーを作成していても適用されます。

スマホ用とタブレット用の両方向けて実装する場合は、バナーのレイアウトパラメーターとして MATCH_PARENTを利用できます。InMobi SDKは、バナービューの寸法を正しく計算しなおして、広告を取得します。

バナー広告を読み込む

バナー広告を読み込むためには、 InMobiBannerインスタンスでの広告をリクエストする前にバナー広告ビューをビュー階層に追加する必要があります。ビューをビュー階層に追加すると、InMobi SDKがバナービューの寸法を正しく計算できるようになり、ネットワークからこれらの寸法に合っている最適な広告をリクエストできるようになります。

ビュー階層に InMobiBannerを追加したら、 作成したインスタンス上にload()を呼び出して広告をリクエストできるようになります。

バナー広告の自動更新の設定

InMobiBannerインスタンス上でload()を呼び出すことにより、初回の広告をリクエスト以降は、バナー広告が自動的に更新されます。自動更新はXMLレイアウトファイル作成時、またはコード上でsetRefreshInterval(int)を実装することで設定できます。。

以下のサンプルでは、XMLでの実装方法を示しています。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.inmobi.ads"
    xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.inmobi.samples.BannerXMLActivity">
    <TextView android:text="@string/banner_xml_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <com.inmobi.ads.InMobiBanner
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:id="@+id/banner"
        ads:placementId="plid-1431977751489005"
        ads:refreshInterval="60"
    />
</LinearLayout>
	

バナー広告更新時のアニメーション設定

バナーを更新する際に実行されるアニメーションスタイルを選択できます。また、オフにすることも設定できます。その場合は、バナーインスタンスの取得後に setAnimationType(InMobiBanner.AnimationType)メソッドを呼び出し実装します。

注意: デフォルトのアニメーションはAnimationType.ROTATE_HORIZONTAL_AXISに設定されています。これをオフにする場合は、 setAnimationTypeメソッドにAnimationType.ANIMATION_OFFパラメーターを設定します。

バナー広告のライフサイクルイベントのリスナー設定

バナーのライフサイクルで重要なイベントにリスナーを設定する場合は、 BannerAdListenerインターフェイスを実装する必要があります。次に、InMobiBannerインスタンス上でsetListener(BannerAdListener)メソッドを使用してこのリスナーを設定できます。各イベントの簡単な説明は以下の通りです。

    /**
* A listener for receiving notifications during the lifecycle of a banner ad.
*/
public abstract class BannerAdEventListener {
   /**
    * Called to notify that an ad was successfully loaded.
    * @param ad Represents the {@link InMobiBanner} ad which was loaded
    */
   public void onAdLoadSucceeded(InMobiBanner ad) {}
   /**
    * Called to notify that a request to load an ad failed.
    * @param ad Represents the {@link InMobiBanner} ad which failed to load
    * @param status Represents the {@link InMobiAdRequestStatus} status containing error reason
    */
   public void onAdLoadFailed(InMobiBanner ad, InMobiAdRequestStatus status) {}
   /**
    * Called to notify that the user interacted with the ad.
    * @param ad Represents the {@link InMobiBanner} ad on which user clicked
    * @param params Represents the click parameters
    */
   public void onAdClicked(InMobiBanner ad, Map<Object, Object> params) {}
   /**
    * Called to notify that the banner ad was displayed
    * @param ad Represents the {@link InMobiBanner} ad which was displayed
    */
   public void onAdDisplayed(InMobiBanner ad) {}
   /**
    * Called to notify that the User is about to return to the application after closing the ad.
    * @param ad Represents the {@link InMobiBanner} ad which was closed
    */
   public void onAdDismissed(InMobiBanner ad) {}
   /**
    * Called to notify that the user is about to leave the application as a result of interacting with the ad.
    * @param ad Represents the {@link InMobiBanner} ad
    */
   public void onUserLeftApplication(InMobiBanner ad) {}
   /**
    * Called to notify that a reward was unlocked.
    * @param ad Represents the {@link InMobiBanner} ad for which rewards was unlocked
    * @param rewards Represents the rewards unlocked
    */
   public void onRewardsUnlocked(InMobiBanner ad, Map<Object, Object> rewards) {}
  }
	

こちら、GitHubでバナー広告インテグレーションのコードサンプルを確認できます。

取得CreativeID

時には、広告品質のチェックをすべて逃れた不正な広告主様が、無関係で不快なものや混乱するものをユーザーに表示することで、アプリのユーザーエクスペリエンスを損なうことになります。 このような状況への対応策として、広告インスタンスのcreativeIDを取得し、InMobiの連絡先に暗号化されたクcreativeIDでレポートし直します。

mBannerAd.getCreativeId() // mBannerAdはサンプルインスタンスです。

インテグレーションのテスト

  1. InMobiポータルでテストモードを設定します。

    [ツール] - [診断]に進み、テストモードを グローバルオンセレクティブオンのどちらかに切り替えます。

    アプリに対する広告インテグレーションが初めての場合 テストモードグローバルオンに設定します。
    特定のテスト用端末にのみテスト用広告を配信したい場合 -

    アプリに対して既にSDKを実装済みで、特定の更新部分などのテストをテスト用の端末に限定して実施する必要がある場合。
    テストモードセレクティブオンに設定します。

    デバイスセクションでテスト端末を登録します。

    1. デバイスIDボックスに、デバイスIDを入力します。
    2. デバイス名ボックスで、任意の名前を設定します。
    3. [デバイスを追加]をクリックしてテスト端末を追加登録します。

    すでに登録済みのテスト端末がある場合は、その端末を選択し、テストモードを有効に設定できます。

    注意: テスト完了後、本番稼働する前にテストモードをオフにしなければなりません。そうしないと、お客様のアプリは収益化できません。

    これで、テスト広告を取得するための準備が整いました。

    デバイスIDの確認方法

    ここでのデバイスIDは Google Play Advertising ID (GPID)を指します。デバイスIDを取得するために、コンソールに対してデバッグログを出力するようにSDKを設定します。以下の行をバナー広告をインテグレーションしているアクティビティに追加することで設定できます。

    InMobiSdk.setLogLevel(LogLevel.DEBUG);
    		

    これでデバイスIDはDDMSコンソール内にデバッグログで出力されます。

  2. [診断]タブ上でテストモード時の広告ユニット別のレポート値を確認できます。実装が正しく行われたか確認するのに役立ちます。

デバッグに役立つ情報

ステップ1で示した通りにデバックログを有効にすると、SDKはDDMSコンソールにデバッグにに役立つログ情報を出力します。

以下、出力されるログの情報です。

SDK初期化時

シナリオ ログ レベル ログ
パブリッシャーがNULLまたは空白のアカウントIDを渡した場合。 Error Account id cannot be null or empty. Please provide a valid Account id.
パブリッシャーが有効なアカウントIDを渡した場合。 Debug InMobi SDK initialized with account id: <account id>
パブリッシャーが無効なアカウントIDを渡した場合。 Error Invalid account id passed to init. Please provide a valid account id.
必須パーミッションの設定不備の場合。 Debug Please grant the mandatory permissions : INTERNET & ACCESS_NETWORK_STATE, SDK could not be initialized.
現在設定されているパーミッション Debug Permissions granted to the SDK are : <List of permissions granted>
より新しいバージョンのSDKが入手可能な場合。 Debug A newer version (ver. 6.0.0) of the InMobi SDK is available! You are currently on an older version (ver. 5.3.1). Download the latest InMobi SDK from http://www.inmobi.com/products/sdk/#downloads

広告のライフサイクルで出力される主なログ

シナリオ ログ レベル ログ
ネットワークが使用できない状況で広告がリクエストされた場合。 Error Network not reachable currently. Please try again.
広告の読み込み中に別の広告がリクエストされた場合。 Error An ad load is already in progress. Please wait for the load to complete before requesting for another ad (<placement id> ).
ユーザーが広告を閲覧中に別の広告がリクエストされた場合。 Error An ad is currently being viewed by the user. Please wait for the user to close the ad before requesting for another ad (<placement id> ).
デバイスIDの確認。 Debug Publisher device id is <Device Id>
リクエストされた広告がキャッシュから戻されている途中。 Returning ad from cache for the Placement Id - <Placement Id>
リクエストされた広告をネットワークから取得中。 Ad will be fetched from network for the Placement Id - <Placement Id>

バナー広告インテグレーション時のログ

シナリオ ログ レベル ログ
SDKが初期化されていない場合。 Error Please initialize the SDK before creating a Banner ad
プレースメントIDが無効またはNULL値でバナーを作成した場合。 Error
無効なプレースメントIDでIB/xml からバナーが読み込まれた場合。 Error Placement id value supplied in XML layout is not valid. Banner creation failed.
XMLで作成されたバナーにプレースメントIDがありません。 Error Placement id value is not supplied in XML layout. Banner creation failed.
バナー広告が読み込まれた場合。 Debug Fetching a Banner ad for placement id: <placement id>
広告が正常に取得された場合。 Debug Banner ad successfully fetched for placement id: <Placement id>
広告の取得に失敗した場合。 Debug Failed to fetch interstitial ad for placement id:  <Placement id> with error: <Status code / message>
Webビューでバナー広告の読み込みが開始された場合。 Debug Started loading Banner ad markup in the webview for placement id: <Placement id>
バナー広告が正常にWebビューに読み込まれた場合。 Debug Successfully loaded banner ad markup in the webview for placement id: <Placement id>
Webビューにバナー広告を読み込めなかった場合。 Debug NA
バナー広告の更新を開始した場合。 Debug Initiating Banner refresh for placement id: <placement id>
プレースメントIDが無効な場合。 Error Placement id value supplied in XML layout is not valid. Banner creation failed.
更新インターバルの値が無効な場合。 Debug Refresh interval value supplied in XML layout is not valid. Falling back to default value.
コンテキストがNULLの場合。 Error Context supplied as null, the ad unit can't be created.
レイアウトパラメーターが設定されていない場合。 Error The layout params of the banner must be set before calling load
高さや幅がWRAP_CONTENTに設定されている場合。 Error The height or width of a Banner ad can't be WRAP_CONTENT
高さか幅が設定されていない場合。 Error The height or width of the banner cannot be determined
リスナーがNULLの場合。 Error Please pass a non-null listener to the banner.

SDKから出力されたログに加えて、広告ユニットと広告リクエストの[診断]タブ上にフィードバックを取得することもできますが、これはインテグレーションの間に特に役立ちます。