前提条件
カスタム イベントのセットアップを完了しておきます。
インタースティシャル広告をリクエストする
ウォーターフォール メディエーションの順序がカスタム イベントの広告申込情報に回ってくると、カスタム イベントの作成時に指定したクラス名で loadInterstitialAd() メソッドが呼び出されます。この場合、メソッドは SampleCustomEvent 内に定義されており、そこから、SampleInterstitialCustomEventLoader 内の loadInterstitialAd() メソッドが呼び出されます。
インタースティシャル広告をリクエストするには、Adapter を継承して loadInterstitialAd() を実装するクラスを作成(または既存のものを変更)します。さらに、MediationInterstitialAd インターフェースを実装するための新しいクラスも作成してください。
カスタム イベントの例では、SampleCustomEvent が Adapter クラスを継承(拡張)し、実際の処理を SampleInterstitialCustomEventLoader に委譲(デリゲート)します。
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationInterstitialAd; import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback; ... public class SampleCustomEvent extends Adapter { private SampleInterstitialCustomEventLoader interstitialLoader; @Override public void loadInterstitialAd( @NonNull MediationInterstitialAdConfiguration adConfiguration, @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> callback) { interstitialLoader = new SampleInterstitialCustomEventLoader(adConfiguration, callback); interstitialLoader.loadAd(); } }
SampleInterstitialCustomEventLoader は、次のタスクを担当します。
インタースティシャル広告を読み込み、読み込みが完了したら
MediationAdLoadCallbackメソッドを呼び出す。MediationInterstitialAdインターフェースを実装する。広告イベント コールバックを受信して Google Mobile Ads SDK (Legacy) に報告する。
アド マネージャーの管理画面で定義された省略可能なパラメータは、広告構成に含まれます。このパラメータには、adConfiguration.getServerParameters().getString(MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD) を使用してアクセスできます。
このパラメータは通常、広告オブジェクトをインスタンス化する際に広告ネットワーク SDK が要求する広告ユニット ID です。
Java
package com.google.ads.mediation.sample.customevent; import com.google.android.gms.ads.mediation.Adapter; import com.google.android.gms.ads.mediation.MediationInterstitialAdConfiguration; import com.google.android.gms.ads.mediation.MediationAdLoadCallback; import com.google.android.gms.ads.mediation.MediationInterstitialAd; import com.google.android.gms.ads.mediation.MediationInterstitialAdCallback; ... public class SampleInterstitialCustomEventLoader extends SampleAdListener implements MediationInterstitialAd { /** A sample third-party SDK interstitial ad. */ private SampleInterstitial sampleInterstitialAd; /** Configuration for requesting the interstitial ad from the third-party network. */ private final MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration; /** Callback for interstitial ad events. */ private MediationInterstitialAdCallback interstitialAdCallback; /** Callback that fires on loading success or failure. */ private final MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> mediationAdLoadCallback; /** Constructor. */ public SampleInterstitialCustomEventLoader( @NonNull MediationInterstitialAdConfiguration mediationInterstitialAdConfiguration, @NonNull MediationAdLoadCallback<MediationInterstitialAd, MediationInterstitialAdCallback> mediationAdLoadCallback) { this.mediationInterstitialAdConfiguration = mediationInterstitialAdConfiguration; this.mediationAdLoadCallback = mediationAdLoadCallback; } /** Loads the interstitial ad from the third-party ad network. */ public void loadAd() { // All custom events have a server parameter named "parameter" that returns // back the parameter entered into the UI when defining the custom event. Log.i("InterstitialCustomEvent", "Begin loading interstitial ad."); String serverParameter = mediationInterstitialAdConfiguration.getServerParameters().getString( MediationConfiguration.CUSTOM_EVENT_SERVER_PARAMETER_FIELD); Log.d("InterstitialCustomEvent", "Received server parameter."); sampleInterstitialAd = new SampleInterstitial(mediationInterstitialAdConfiguration.getContext()); sampleInterstitialAd.setAdUnit(serverParameter); // Implement a SampleAdListener and forward callbacks to mediation. sampleInterstitialAd.setAdListener(this); // Make an ad request. Log.i("InterstitialCustomEvent", "start fetching interstitial ad."); sampleInterstitialAd.fetchAd( SampleCustomEvent.createSampleRequest(mediationInterstitialAdConfiguration)); } public SampleAdRequest createSampleRequest( MediationAdConfiguration mediationAdConfiguration) { SampleAdRequest request = new SampleAdRequest(); request.setTestMode(mediationAdConfiguration.isTestRequest()); request.setKeywords(mediationAdConfiguration.getMediationExtras().keySet()); return request; } }
広告が正常に取得されたか、エラーが発生したかに応じて、
onSuccess()
または
onFailure()を呼び出します。
onSuccess() は、MediationInterstitialAd を実装するクラスのインスタンスを渡すことで呼び出されます。
通常、これらのメソッドは、アダプタが実装するサードパーティ SDK のコールバック内に実装されます。この例では、関連するコールバックを含む SampleAdListener が「Sample SDK」に含まれています。
Java
@Override public void onAdFetchSucceeded() { interstitialAdCallback = mediationAdLoadCallback.onSuccess(this); } @Override public void onAdFetchFailed(SampleErrorCode errorCode) { mediationAdLoadCallback.onFailure(SampleCustomEventError.createSampleSdkError(errorCode)); }
MediationInterstitialAd では、広告を表示するために showAd() メソッドを実装する必要があります。
Java
@Override public void showAd(@NonNull Context context) { sampleInterstitialAd.show(); }
メディエーション イベントを Google Mobile Ads SDK (Legacy) に転送する
onSuccess() が呼び出されると、返された MediationInterstitialAdCallback
オブジェクトをアダプタが使用することにより、プレゼンテーション イベントを
サードパーティ SDK から Google Mobile Ads SDK (Legacy) に転送できます。SampleInterstitialCustomEventLoader クラスは SampleAdListener インターフェースを拡張して、サンプル広告ネットワークからのコールバックを Google Mobile Ads SDK に転送します。
カスタム イベントには、可能な限り多くのコールバックを転送することが重要です。これにより、アプリはそれらに対応するイベントを Google Mobile Ads SDK から受け取れるようになります。コールバックの使用例を以下に示します。
Java
@Override public void onAdFullScreen() { interstitialAdCallback.reportAdImpression(); interstitialAdCallback.onAdOpened(); } @Override public void onAdClosed() { interstitialAdCallback.onAdClosed(); }
これで、インタースティシャル広告のカスタム イベントの実装が完了しました。サンプル全体は GitHub で入手できます。このサンプルは、すでにサポートされている広告ネットワークの実装例として利用できるほか、必要に応じてコードをカスタマイズし、独自のインタースティシャル広告用カスタム イベントを表示するために利用することも可能です。