Skip to main content

概要

バナー広告は画面の一部に表示される矩形の広告です。XMLレイアウトとコードの両方で使用できます。

主な特徴

  • 画面の上部、下部、または中央に固定配置可能
  • 画像および動画広告に対応
  • XMLレイアウトとプログラム方式の両方に対応
  • リスナーによる広告イベント処理
開発環境ではテストユニットIDを使用してください:PUBLIC_TEST_UNIT_ID_320_100

XMLレイアウト実装

XMLレイアウトでAdropBannerを定義し、ActivityまたはFragmentからロードする方式です。

1. XMLレイアウト定義

FrameLayoutまたは他のコンテナにAdropBannerを配置します。
activity_main.xml

2. Activityからロード

XML属性


プログラム方式での実装

コードで直接AdropBannerインスタンスを作成してビューに追加する方式です。

AdropBannerの初期化

コンストラクタ

Context
必須
ActivityまたはApplicationのContext

ユニットIDの設定

String
必須
Adropコンソールで作成したユニットID

広告のロード

バナーを画面に追加した後、load()メソッドを呼び出して広告をリクエストします。
バナーが画面に表示されている時点でload()を呼び出してください。表示されていない状態でロードすると、インプレッションが正確に測定されない場合があります。

リスナーの実装

AdropBannerListenerインターフェースは広告のライフサイクルイベントを処理します。

onAdReceived(必須)

広告の受信に成功した時に呼び出されます。

onAdFailedToReceive(必須)

広告の受信に失敗した時に呼び出されます。
AdropErrorCode
エラーの種類を示すコード。詳細はリファレンスを参照してください。

onAdImpression(オプション)

広告が画面に表示された時に呼び出されます。

onAdClicked(必須)

ユーザーが広告をクリックした時に呼び出されます。

onAdVideoStart(オプション)

動画バナー広告で動画再生が開始された時に呼び出されます。

onAdVideoEnd(オプション)

動画バナー広告で動画再生が終了した時に呼び出されます。

コンテキストIDの設定

コンテキストターゲティングのためにコンテキストIDを設定できます。
コンテキストIDは広告をロードする前に設定する必要があります。

ライフサイクル管理

destroy()

バナーを使用しなくなった時は、必ずdestroy()を呼び出してリソースを解放してください。
destroy()を呼び出さないとメモリリークが発生する可能性があります。

広告サイズ

バナー広告はユニットに設定したサイズに合わせてビューのサイズを指定する必要があります。

一般的なバナーサイズ

XMLでサイズを指定

コードでサイズを指定


テストユニットID

開発およびテスト時は以下のテストユニットIDを使用してください。

使用例


動画再生制御

動画バナー広告の場合、play()とpause()を使用してビデオ再生を手動で制御できます。

play()

動画の再生を再開します。ポップアップが閉じたり、アプリがバックグラウンドから復帰してバナーが再び表示されるときに呼び出してください。

pause()

動画の再生を一時停止します。バナーがポップアップで隠れたり、アプリがバックグラウンドに移行するときに呼び出してください。

例:バックグラウンド/フォアグラウンドの処理

play()とpause()は動画バナー広告にのみ影響します。画像バナーには効果がありません。

カスタムクリック処理

デフォルトでは、SDKはユーザーがバナー広告をクリックすると自動的に遷移先URLを開きます。クリックイベントを自分で処理したい場合(例:確認ダイアログの表示、分析ログの記録後に遷移など)、useCustomClickを使用できます。
Boolean
デフォルト:"false"
trueに設定すると、SDKはクリック時に自動的に遷移先URLを開きません。onAdClickedイベントのみ発火し、open()を手動で呼び出す必要があります。

open()

広告の遷移先URLを開きます。カスタムURLを渡して別のURLを開くこともできます。
open()はuseCustomClickがtrueに設定されている場合のみ動作します。useCustomClickがfalse(デフォルト)の場合、SDKが自動的にURLを開きます。

ベストプラクティス

1. メモリ管理

ActivityやFragmentが終了する時は必ずバナーを解放してください。

2. 画面の可視性

バナーが画面に表示されている時に広告をロードしてください。

3. エラー処理

広告ロード失敗時の適切なエラー処理を実装してください。

4. RecyclerViewでの使用

RecyclerViewでバナーを使用する時は、ViewHolderで適切に管理してください。

完全な例

Kotlinの例

Javaの例

XMLレイアウト

activity_banner.xml

一括ロード (loads)

AdropBanner.loads()を使用すると、1回の呼び出しで複数のバナー広告をまとめてリクエストできます。カルーセルやページネーション付きフィード、広告プールのプリフェッチなどに有用です。

シグネチャ

使用方法

リスナーコールバック

単体onAdReceived / onAdFailedToReceiveコールバックはloads()経路では呼ばれません。バッチ結果は必ずonAdsReceived / onAdsFailedToReceiveで受け取ってください。

制約事項

  • 呼び出しあたり最大5個。 サーバーがそれ以上を返しても先頭の5個のみ配信されます。
  • バックフィルは適用されません。 ダイレクト広告が埋まらない場合、バックフィル設定に関わらずonAdsFailedToReceiveがERROR_CODE_AD_NO_FILLで呼ばれます。
  • onAdsReceived内でdestroy()を呼ばないでください。 まず各バナーをビュー階層に付加し、その後親Activity.onDestroy()(または同等のタイミング)でdestroy()してください。
  • onAdsReceivedは広告データが適用され次第発火し、単体load()と同じ動作です — ビューに付加後にクリエイティブが描画されます。

バックフィル広告

バックフィル広告が有効な場合、ダイレクト広告がないときに自動的にバックフィル広告がロードされます。isBackfilledプロパティでバックフィル広告かどうかを確認できます。
バックフィル広告を使用するには、io.adrop:adrop-ads-backfill依存関係を追加する必要があります。

バックフィル広告のプリロード (preload)

SDK 1.17.0から、AdropBanner.preload()でバックフィルバナー広告をプリロードしておくことができます。同じユニットIDと同じサイズでload()したバナーが、ダイレクト広告なしでバックフィル広告に切り替わると、バックフィル広告を再度リクエストせず、プリロードしておいた広告をすぐに表示します。 load()はpreloadに関係なく、まずダイレクト広告をリクエストします。ダイレクト広告が表示された場合、プリロードしておいた広告はそのまま残ります。preloadを呼び出さなければ、動作はこれまでと同じです。

動作条件

  • io.adrop:adrop-adsとio.adrop:adrop-ads-backfillの両方が1.17.0以降である必要があります。
  • 現在表示するダイレクト広告がないとサーバーからアプリに通知されている状態でのみ、バックフィル広告を受信します。それ以外の場合は、バックフィル広告をリクエストせずにERROR_CODE_AD_PRELOAD_SKIPPEDで終了します。ダイレクト広告のキャンペーンがあるアプリでは正常な結果です。
  • アプリのインストール直後、アプリキーを変更した直後、setUIDで別のユーザーに切り替えた直後は、サーバーの応答を受信するまでERROR_CODE_AD_PRELOAD_SKIPPEDで終了します。
  • テストユニットIDでは常にERROR_CODE_AD_PRELOAD_SKIPPEDで終了します。

使用方法

バナーを表示するActivityをcontextに渡し、バナーがある画面を表示する直前に呼び出してください。プリロードした広告は使用されないと30分後に破棄されるため、すぐに表示するバナーに対してのみ呼び出してください。結果を待ってからload()する必要はありません。まだ受信中の場合は、load()がその結果を待って使用します。
プリロードしておいた広告を使用するには、load()するバナーのadSizeを、preloadに渡したサイズと同じに設定してください。

プリロードした広告が使われる条件

  • 同じユニットIDと同じサイズ: load()するバナーのadSize(指定していない場合は画面に配置されたビューのサイズ、dp)が、preloadに渡したサイズと同じである必要があります。サイズが異なる場合、プリロードした広告はそのまま残り、load()は通常どおりバックフィル広告をリクエストします。
  • 同じActivity: preloadに渡したActivityとは別のActivityで作成したバナーには使用されません(例:スプラッシュActivityでpreloadし、メインActivityでload())。preloadに渡したActivityが終了すると、プリロードした広告も破棄されます。
  • 一度だけ使用: プリロードした広告は、1回のload()で使用されるとなくなります。再度プリロードするには、preloadをもう一度呼び出してください。
  • 有効期間と個数: 30分以内に使用されなかった広告は破棄されます。同じユニット・サイズには1個のみ保持し、バナーは異なるユニット・サイズの組み合わせを最大5個まで保持します。5個を超えると、最も早く受信した広告から破棄します。
  • 再度呼び出す場合: 同じユニット・サイズで再度呼び出しても、新たにリクエストしません。受信済みの広告がある場合は新しいリクエストなしでonAdPreloadReceivedが呼び出され、受信中の場合はそのロードの結果(成功または失敗)がそのまま伝えられます。広告を更新する用途には使用できません。ただし、その間にユーザーの同意状態が変わった場合や、別のActivityを渡して呼び出した場合は、既存の広告を破棄して新たに受信します。
  • 同意状態の変更: プリロードした後にユーザーの同意状態が変わると、その広告はload()に使用されません。

結果コールバック

AdropBannerListenerに次のコールバックが追加されました。どちらも任意実装で、preloadを呼び出すたびに、いずれか一方がメインスレッドで1回呼び出されます。preloadでは、ほかのリスナーコールバックは呼び出されません。 contextIdは、preloadに渡した値をそのまま返します。プリロードした広告の選択には使用されません。

失敗コード

失敗コールバック内でpreloadをすぐに再度呼び出さないでください。バックフィル依存関係がない場合のように結果が変わらないと、呼び出しが際限なく繰り返されます。次の画面を表示する前など、後で再度呼び出してください。

次のステップ

ネイティブ広告

UIに合わせてカスタマイズ可能なネイティブ広告を実装

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

全画面のインタースティシャル広告を実装

ターゲティング設定

ユーザー属性とコンテキストターゲティングを設定

リファレンス

クラス、リスナー、エラーコードを確認