Android ガイドライン | インタースティシャル広告

インタースティシャル広告はアプリ フローの固有のブレークポイントに置かれるフルページ広告です。バナー広告と比較して 10 倍のスペースを有するインタースティシャルは、ユーザーの目を引き、お客様のモバイル ビジネスの収益を高めることが保証されています。

以下の手順に従い、インタースティシャル広告での収益化を開始してください。

インタースティシャル広告の設定

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

インタースティシャル広告のアプリへの追加

インタースティシャル広告の作成

インタースティシャル広告を作成するために、以下の InMobiInterstitialのインスタンスを作成します。

InMobiInterstitial interstitialAd = new InMobiInterstitial(InterstitialAdsActivity.this, 1471550843414L, mInterstitialAdEventListener);
	

こちらの mInterstitialAdListenerInterstitialAdListener2インターフェースを実装したものです。インタースティシャル広告を作成するにはこのインターフェースの実装が必須です。

注意:

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

InterstitialAdEventListener </ code>抽象クラスを使用すると、インタースティシャル広告のキーライフサイクルイベントを聴くことができます。これらのイベントリスナーを介してお客様のアプリケーションがさまざまなライフサイクルトランジションを正しくハンドルしていることを確認する必要があります。 </p> <pre> /** * Listener for receiving notifications during the lifecycle of an interstitial. */ public abstract class InterstitialAdEventListener { /** * Called to indicate that an ad was loaded and it can now be shown. This will always be called * <strong>after</strong> the {@link #onAdReceived(InMobiInterstitial)} callback. * * @param ad Represents the {@link InMobiInterstitial} ad which was loaded */ public void onAdLoadSucceeded(InMobiInterstitial ad) {}

/** * Callback to signal that a request to fetch an ad (by calling * {@link InMobiInterstitial#load()} failed. The status code indicating the reason for failure * is available as a parameter. You should call {@link InMobiInterstitial#load()} again to * request a fresh ad. * * @param ad Represents the {@link InMobiInterstitial} ad which failed to load * @param status Represents the {@link InMobiAdRequestStatus} status containing error reason */ public void onAdLoadFailed(InMobiInterstitial ad, InMobiAdRequestStatus status) {}

/** * Called to indicate that an ad is available in response to a request for an ad (by calling * {@link InMobiInterstitial#load()}. <p class="note"><strong>Note</strong> This does not * indicate that the ad can be shown yet. Your code should show an ad <strong>after</strong> the * {@link #onAdLoadSucceeded(InMobiInterstitial)} method is called. Alternately, if you do not * want to handle this event, you must test if the ad is ready to be shown by checking the * result of calling the {@link InMobiInterstitial#isReady()} method.</p> * * @param ad Represents the {@link InMobiInterstitial} ad for which ad content was received */ public void onAdReceived(InMobiInterstitial ad) {}

/** * Called to indicate that an ad interaction was observed. * * @param ad Represents the {@link InMobiInterstitial} ad on which user clicked * @param params Represents the click parameters */ public void onAdClicked(InMobiInterstitial ad, Map<Object, Object> params) {}

/** * Called to indicate that the ad will be launching a fullscreen overlay. * * @param ad Represents the {@link InMobiInterstitial} ad which will display */ public void onAdWillDisplay(InMobiInterstitial ad) {}

/** * Called to indicate that the fullscreen overlay is now the topmost screen. * * @param ad Represents the {@link InMobiInterstitial} ad which is displayed */ public void onAdDisplayed(InMobiInterstitial ad) {}

/** * Called to indicate that a request to show an ad (by calling {@link InMobiInterstitial#show()} * failed. You should call {@link InMobiInterstitial#load()} to request for a fresh ad. * * @param ad Represents the {@link InMobiInterstitial} ad which failed to show */ public void onAdDisplayFailed(InMobiInterstitial ad) {}

/** * Called to indicate that the fullscreen overlay opened by the ad was closed. * * @param ad Represents the {@link InMobiInterstitial} ad which was dismissed */ public void onAdDismissed(InMobiInterstitial ad) {}

/** * Called to indicate that the user may leave the application on account of interacting with the ad. * * @param ad Represents the {@link InMobiInterstitial} ad */ public void onUserLeftApplication(InMobiInterstitial ad) {}

/** * Called to indicate that rewards have been unlocked. * * @param ad Represents the {@link InMobiInterstitial} ad for which rewards was unlocked * @param rewards Represents the rewards unlocked */ public void onRewardsUnlocked(InMobiInterstitial ad, Map<Object, Object> rewards) {} }

インタースティシャル広告の読み込み

インタースティシャル広告をリクエストするには、 InMobiInterstitialインスタンス上でload()メソッドを呼び出します。

interstitialAd.load();
	

InterstitialAdEventListener 抽象クラスは、このメソッドの結果を通知します。広告リクエストに成功した場合は、onAdReceived(InMobiInterstitial)イベントが生成されます。次に、onAdLoadSucceededイベントかonAdLoadFailedイベントが生成されます。

onAdLoadFailedイベントが生成された場合、このイベントのInMobiAdRequestStatusオブジェクトにより理由が示されます。

onAdLoadSucceededイベントが生成された場合、これ以降はいつでも InMobiInterstitialインスタンス上のshow()を呼び出すことにより広告を表示できます。

注意: onAdLoadSucceededイベントが生成されたあとで、同じインタースティシャル広告上でload()を呼び出しても、ネットワークからの新しい広告のリクエストは保証されません。新しい広告が取得されるのは、以前の広告をSDKが廃棄した場合、広告の有効期限が切れた場合、またはユーザーがアプリケーションのデータやキャッシュをクリアした場合のみです。

インタースティシャル広告の表示

インタースティシャル広告を表示するには、SDKが onAdLoadSucceededイベントを生成した後、任意のタイミングでInMobiInterstitialインスタンス上でshow()を呼び出してください。

以下、コード例です。

    InterstitialAdEventListener mInterstitialAdEventListener = new InterstitialAdEventListener
() {
        // implementation for other events
        // onAdReceived, onAdLoaFailed, etc
        @Override
        public void onAdLoadSucceeded(InMobiInterstitial inMobiInterstitial) {
            Log.d(TAG, "Ad can now be shown!");
            mCanShowAd = true;
        }
    };
   void init() {
       InMobiInterstitial interstitialAd = new InMobiInterstitial(GameActivity.this, 1471550843414L, mInterstitialAdEventListener);
   }
   void prepareGameLevel() {
       interstitialAd.load();
   }
   void handleGameLevelCompleted() {
        If (mCanShowAd) interstitialAd.show();
   }
	

アプリケーションは、このリクエストの結果を InterstitialAdEventListener </ code>抽象クラスを介して通知します。 </p> <p> コード上、広告を表示できる場合、SDKは <code>onAdWillDisplay インタフェース上に呼び出し、続いて、その広告が実際に画面上に表示されている場合はonAdDisplayed メソッドを呼び出すことで状態を通知します。

広告が表示できない場合は、SDKが onAdDisplayFailedイベントを生成して、お客様のアプリケーションに広告を表示できなかったことを知らせます。このイベントに対処するために、load()を再度呼び出すことで新しい広告をリクエストできます。

インタースティシャル広告が閉じられる場合は、お客様のアプリケーションの onAdDismissedコールバックに通知されます。

アニメーション

このプロセスで使用するアニメーションリソースIDを実装することでインタースティシャル広告の表示と非表示をアニメーション化できます。これは、以下の例の様に show(int, int)を呼び出すだけで実行できます。

interstitialAd.show(R.anim.anim_entry, R.anim.anim_exit);
	

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

取得CreativeID

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

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

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

  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>
パブリッシャーが無効なアカウント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 an interstitial ad
インタースティシャル広告が読み込まれた場合。 Debug Fetching an interstitial ad for placement id: <placement id>
広告が正常に取得された場合。 Debug Interstitial ad successfully fetched for placement id: <Placement id>
広告の取得に失敗した場合。 Error Failed to fetch interstitial ad for placement id:  <Placement id> with error: <Status code / message>
Webビューでインタースティシャル広告の読み込みが開始された場合。 Debug Started loading interstitial ad markup in the webview for placement id: <Placement id>
インタースティシャル広告が正常にWebビューに読み込まれた場合。 Debug Successfully loaded interstitial ad markup in the webview for placement id: <Placement id>
Webビューにインタースティシャル広告を読み込めなかった場合。 Error Failed to load interstitial markup in the webview for placement id: <Placement id>
タイムアウトのためにWebビューにインタースティシャル広告を読み込めなかった場合。 Error Failed to load interstitial markup in the webview due to timeout for placement id: <Placement id>
インタースティシャル広告が表示された場合。 Debug Successfully displayed Interstitial for placement id: <Placement id>
インタースティシャル広告が閉じられた場合。 Debug Interstitial ad dismissed for placement id: <Placement id>
イベントリスナーが設定されていない場合。 Error The Ad unit cannot be created as no event listener was supplied. Please attach a listener to proceed
コンストラクターにコンテキストが設定されていない場合。 Error Unable to create ad unit with NULL context object
広告がReadyステータスになる前に表示しようとした場合。 Error Ad Load is not complete. Please wait for the Ad to be in a ready state before calling show The supplied resource id with show for animations is invalid
InMobiAdActivityの追加不備。 Error Do not declare InMobiAdActivity in manifest file.

SDKから出力されたログに加えて、テストモードでの[診断]タブ上に表示される情報をSDKの実装及びデバッグに役立てることができます。