インタースティシャル広告のカスタム イベント

プラットフォームを選択: Android iOS Android(レガシー)

前提条件

カスタム イベントのセットアップを完了しておきます。

インタースティシャル広告をリクエストする

ウォーターフォール メディエーションの順序がカスタム イベントの広告申込情報に回ってくると、カスタム イベントの作成時に指定したクラス名で loadInterstitialAd() メソッドが呼び出されます。この場合、メソッドは SampleCustomEvent 内に定義されており、そこから、SampleInterstitialCustomEventLoader 内の loadInterstitialAd() メソッドが呼び出されます。

インタースティシャル広告をリクエストするには、Adapter を継承して loadInterstitialAd() を実装するクラスを作成(または既存のものを変更)します。さらに、MediationInterstitialAd インターフェースを実装するための新しいクラスも作成してください。

カスタム イベントの例では、SampleCustomEventAdapter クラスを継承(拡張)し、実際の処理を 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 で入手できます。このサンプルは、すでにサポートされている広告ネットワークの実装例として利用できるほか、必要に応じてコードをカスタマイズし、独自のインタースティシャル広告用カスタム イベントを表示するために利用することも可能です。