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

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

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

前提条件

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

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

Kotlin

ad.adEventCallback =
  object : RewardedAdEventCallback {
    override fun onAdPaid(adValue: AdValue) {
      // Send the impression-level ad revenue information to your
      // preferred analytics server directly within this callback.

      // Extract the impression-level ad revenue data.
      val valueMicros = adValue.valueMicros
      val currencyCode = adValue.currencyCode
      val precisionType = adValue.precisionType

      val loadedAdSourceResponseInfo = ad.getResponseInfo().loadedAdSourceResponseInfo
      val adSourceName = loadedAdSourceResponseInfo?.name
      val adSourceId = loadedAdSourceResponseInfo?.id
      val adSourceInstanceName = loadedAdSourceResponseInfo?.instanceName
      val adSourceInstanceId = loadedAdSourceResponseInfo?.instanceId
      val extras = ad.getResponseInfo().responseExtras
      val mediationGroupName = extras.getString("mediation_group_name")
      val mediationABTestName = extras.getString("mediation_ab_test_name")
      val mediationABTestVariant = extras.getString("mediation_ab_test_variant")
    }
  }

Java

ad.setAdEventCallback(
    new RewardedAdEventCallback() {
      @Override
      public void onAdPaid(@NonNull AdValue value) {
        // Send the impression-level ad revenue information to your preferred
        // analytics server directly within this callback.

        // Extract the impression-level ad revenue data.
        long valueMicros = value.getValueMicros();
        String currencyCode = value.getCurrencyCode();
        PrecisionType precisionType = value.getPrecisionType();

        AdSourceResponseInfo loadedAdSourceResponseInfo =
            ad.getResponseInfo().getLoadedAdSourceResponseInfo();
        String adSourceName = loadedAdSourceResponseInfo.getName();
        String adSourceId = loadedAdSourceResponseInfo.getId();
        String adSourceInstanceName = loadedAdSourceResponseInfo.getInstanceName();
        String adSourceInstanceId = loadedAdSourceResponseInfo.getInstanceId();

        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");
      }
    });

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

カスタム イベントの広告ソースの場合、AdSourceResponseInfo.name プロパティは広告ソース名 Custom event を返します。複数のカスタム イベントを使用している場合、広告ソース名では複数のカスタム イベントを区別できません。特定のカスタム イベントを見つけるには、次の手順を踏みます。

  1. AdSourceResponseInfo.name プロパティを取得します。
  2. 一意の広告ソース名を設定します。

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

Kotlin

private fun getUniqueAdSourceName(loadedAdapterResponseInfo: AdSourceResponseInfo): String {
  var adSourceName = loadedAdapterResponseInfo.name
  if (adSourceName == "Custom Event") {
    if (
      loadedAdapterResponseInfo.adapterClassName ==
        "com.google.ads.mediation.sample.customevent.SampleCustomEvent"
    ) {
      adSourceName = "Sample Ad Network (Custom Event)"
    }
  }
  return adSourceName
}

Java

private String getUniqueAdSourceName(@NonNull AdSourceResponseInfo loadedAdapterResponseInfo) {
  String adSourceName = loadedAdapterResponseInfo.getName();
  if (adSourceName.equals("Custom Event")) {
    if (loadedAdapterResponseInfo
        .getAdapterClassName()
        .equals("com.google.ads.mediation.sample.customevent.SampleCustomEvent")) {
      adSourceName = "Sample Ad Network (Custom Event)";
    }
  }
  return adSourceName;
}

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

App Attribution Partner(AAP)との連携

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

パートナー SDK
調整
AppsFlyer
Singular
Tenjin

実装に関するベスト プラクティス

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

AdValue

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

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

AdMob メディエーションの場合、AdMob は最適化された広告ソースの ESTIMATED 値を提供しようとします。最適化されていない場合や、意味のある推計を得るのに十分な集計データがない場合は、PUBLISHER_PROVIDED 値が返されます。

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

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

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

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

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