インプレッション単位の広告収益

プラットフォームを選択: Android iOS Unity

インプレッションが発生すると、そのインプレッションに関連する広告収益データが Google Mobile Ads SDK によって提供されます。このデータを使用して、ユーザーのライフタイム バリューを計算したり、データをダウンストリームの他の関連システムに転送したりできます。

このガイドでは、Android アプリにインプレッション単位の広告収益データ キャプチャを実装する方法を説明しています。

前提条件

  • Google Mobile Ads SDK 21.1.0 以降をインポートしていること。

各広告フォーマットには OnPaidEventListener があります。Google Mobile Ads SDK は広告イベントのライフサイクル全体でインプレッション イベントを監視しており、インプレッションが発生すると、得られた収益の値とともにハンドラを呼び出します。

次の例では、リワード広告の有料イベントを処理します。

Java

private void setOnPaidEventListener(RewardedAd ad) {
  ad.setOnPaidEventListener(
      new OnPaidEventListener() {
        @Override
        public void onPaidEvent(@NonNull AdValue adValue) {
          // Extract the impression-level ad revenue data.
          long valueMicros = adValue.getValueMicros();
          String currencyCode = adValue.getCurrencyCode();
          int precision = adValue.getPrecisionType();

          // Get the ad unit ID.
          String adUnitId = ad.getAdUnitId();

          // Extract ad response information.
          AdapterResponseInfo loadedAdapterResponseInfo =
              ad.getResponseInfo().getLoadedAdapterResponseInfo();
          if (loadedAdapterResponseInfo != null) {
            String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
            String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
            String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
            String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

            Bundle extras = ad.getResponseInfo().getResponseExtras();
            String mediationGroupName = extras.getString("mediation_group_name");
            String mediationABTestName = extras.getString("mediation_ab_test_name");
            String mediationABTestVariant = extras.getString("mediation_ab_test_variant");
          }
        }
      });
}

Kotlin

private fun setOnPaidEventListener(ad: RewardedAd) {
  ad.onPaidEventListener = OnPaidEventListener { adValue ->
    // Extract the impression-level ad revenue data.
    val valueMicros = adValue.valueMicros
    val currencyCode = adValue.currencyCode
    val precision = adValue.precisionType

    // Get the ad unit ID.
    val adUnitId = ad.adUnitId

    // Extract ad response information.
    val loadedAdapterResponseInfo = ad.responseInfo.loadedAdapterResponseInfo
    val adSourceName = loadedAdapterResponseInfo?.adSourceName
    val adSourceId = loadedAdapterResponseInfo?.adSourceId
    val adSourceInstanceName = loadedAdapterResponseInfo?.adSourceInstanceName
    val adSourceInstanceId = loadedAdapterResponseInfo?.adSourceInstanceId
    val extras = ad.responseInfo.responseExtras
    val mediationGroupName = extras.getString("mediation_group_name")
    val mediationABTestName = extras.getString("mediation_ab_test_name")
    val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
  }
}

カスタム イベントの広告ソース名を特定する

カスタム イベントの広告ソースの場合、getAdSourceName() メソッドは広告ソース名 Custom event を返します。複数のカスタム イベントを使用している場合、広告ソース名では複数のカスタム イベントを区別できません。特定のカスタム イベントを見つけるには、次の手順を踏みます。

  1. getAdSourceName() メソッドを呼び出します。
  2. 一意の広告ソース名を設定します。

次の例では、カスタム イベントに一意の広告ソース名を設定しています。

Java

private String getUniqueAdSourceName(@NonNull AdapterResponseInfo loadedAdapterResponseInfo) {

  String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
  if (adSourceName.equals("Custom Event")) {
    if (loadedAdapterResponseInfo
        .getAdapterClassName()
        .equals("com.google.ads.mediation.sample.customevent.SampleCustomEvent")) {
      adSourceName = "Sample Ad Network (Custom Event)";
    }
  }
  return adSourceName;
}

Kotlin

private fun getUniqueAdSourceName(loadedAdapterResponseInfo: AdapterResponseInfo): String {

  var adSourceName = loadedAdapterResponseInfo.adSourceName
  if (adSourceName == "Custom Event") {
    if (
      loadedAdapterResponseInfo.adapterClassName ==
        "com.google.ads.mediation.sample.customevent.SampleCustomEvent"
    ) {
      adSourceName = "Sample Ad Network (Custom Event)"
    }
  }
  return adSourceName
}

広告枠を落札した広告ソースについてさらに詳しい情報が必要な場合は、広告レスポンスに関する情報を取得するをご覧ください。

App Attribution Partner(AAP)との連携

広告収益データを分析プラットフォームに転送する方法について詳しくは、各パートナーのガイドをご覧ください。

パートナー SDK
Adjust
AppsFlyer
Singular
Tenjin

実装のヒント

  • リスナーの設定は、広告を表示するよりも前に行う必要があります。有料イベント コールバックを逃すことがないよう、広告オブジェクトを作成したら、あるいは広告オブジェクトへのアクセス権を得たら、すぐに済ませましょう。
  • ご利用の分析サーバーにインプレッション単位の広告収益の情報を送る処理は、有料イベント コールバックの呼び出し直後に行いましょう。誤ってコールバックを逃すことを防ぎ、データ不一致の発生を回避できます。

AdValue

AdValue は、広告で得られた金銭的価値を表すクラスで、その金銭的価値の通貨コードと、以下に示すエンコードされた精度タイプが含まれます。

精度タイプ 説明
UNKNOWN 広告の価値が不明。LTV Pingback が有効になっているものの、十分なデータがない場合に返されます。
ESTIMATED 集計データから推定された広告の価値。
PUBLISHER_PROVIDED パブリッシャーが指定した広告の価値(メディエーション グループ内の手動 CPM など)。
PRECISE 広告に支払われた正確な金額。

AdMob メディエーションの場合、AdMob は最適化された広告ソースの ESTIMATED 値を提供しようとします。

最適化されていない場合や、意味のある推計を得るのに十分な集計データがない場合は、PUBLISHER_PROVIDED 値が返されます。

入札広告ソースからのテスト インプレッション

テスト リクエストを通じて入札広告ソースでインプレッション単位の広告収益イベントが発生すると、次の値のみが返されます。

  • UNKNOWN: 精度タイプを示します。
  • 0: 広告の価値を示します。

以前は、精度タイプが UNKNOWN 以外の値として表示され、広告の値が 0 より大きい値として表示されることがありました。

テスト広告リクエストの送信について詳しくは、テストデバイスを有効にするをご覧ください。