Werbeeinnahmen auf Impressionsebene

Wenn eine Impression erfolgt, liefert das Google Mobile Ads SDK Daten zum Werbeumsatz, die mit dieser Impression verknüpft sind. Sie können die Daten verwenden, um den Lifetime-Wert eines Nutzers zu berechnen, oder die Daten nachgelagert an andere relevante Systeme weiterleiten.

Dieser Leitfaden soll Ihnen dabei helfen, die Erfassung der Werbeeinnahmen auf Impressionsebene in Ihrer Android-App zu implementieren.

Voraussetzungen

Jedes Anzeigenformat hat ein OnPaidEventListener. Während des Lebenszyklus eines Anzeigenereignisses überwacht das Google Mobile Ads SDK Impressionsereignisse und ruft den Handler mit einem erzielten Wert auf.

Der folgende Code zeigt, wie bezahlte Ereignisse für eine Anzeige mit Prämie verarbeitet werden:

Java

import com.google.android.gms.ads.rewarded.RewardedAd;

public class MainActivity extends Activity {
  private RewardedAd rewardedAd;
  private final String TAG = "MainActivity";

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    AdRequest adRequest = new AdRequest.Builder().build();

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, new RewardedAdLoadCallback(){
        @Override
        public void onAdLoaded(@NonNull RewardedAd ad) {
          rewardedAd = ad;
          // Set paid event listener
          rewardedAd.setOnPaidEventListener(new OnPaidEventListener() {
            @Override
            public void onPaidEvent(AdValue adValue) {
              // TODO: 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 = adValue.getValueMicros();
              String currencyCode = adValue.getCurrencyCode();
              int precision = adValue.getPrecisionType();

              // Get the ad unit ID.
              String adUnitId = rewardedAd.getAdUnitId();
              
              AdapterResponseInfo loadedAdapterResponseInfo = rewardedAd.getResponseInfo().
                  getLoadedAdapterResponseInfo();
              String adSourceName = loadedAdapterResponseInfo.getAdSourceName();
              String adSourceId = loadedAdapterResponseInfo.getAdSourceId();
              String adSourceInstanceName = loadedAdapterResponseInfo.getAdSourceInstanceName();
              String adSourceInstanceId = loadedAdapterResponseInfo.getAdSourceInstanceId();

              Bundle extras = rewardedAd.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

import com.google.android.gms.ads.rewarded.RewardedAd

class MainActivity : AppCompatActivity() {
  private var rewardedAd: RewardedAd? = null
  private final var TAG = "MainActivity"

  override fun onCreate(savedInstanceState: Bundle?) {
    AdRequest adRequest = new AdRequest.Builder().build()

    RewardedAd.load(this, "AD_UNIT_ID",
      adRequest, object: RewardedAdLoadCallback() {
        override fun onAdLoaded(ad: RewardedAd) {
          rewardedAd = ad
          // Set paid event listener
          rewardedAd.onPaidEventListener = OnPaidEventListener { adValue ->
            // TODO: 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 precision = adValue.precisionType

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

            val loadedAdapterResponseInfo = rewardedAd.responseInfo.loadedAdapterResponse
            val adSourceName = loadedAdapterResponseInfo.adSourceName
            val adSourceId = loadedAdapterResponseInfo.adSourceId
            val adSourceInstanceName = loadedAdapterResponseInfo.adSourceInstanceName
            val adSourceInstanceId = loadedAdapterResponseInfo.adSourceInstanceId
            val extras = rewardedAd.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")
          }
        }
    })
  }
}

Weitere Informationen zur erfolgreichen Anzeigenquelle finden Sie unter Informationen zur Anzeigenantwort abrufen.

AAP-Integration (App Attribution Partners)

Ausführliche Informationen zum Weiterleiten von Daten zu Werbeeinnahmen an Analyseplattformen finden Sie im Leitfaden des Partners:

Partner-SDK
Adjust
AppsFlyer
Singular
Tenjin

Best Practices für die Implementierung

  • Legen Sie den Listener sofort fest, nachdem Sie das Anzeigenobjekt erstellt haben oder Zugriff darauf erhalten, und unbedingt noch bevor die Anzeige ausgeliefert wird. So verpasst du keine Rückrufe für bezahlte Veranstaltungen.
  • Senden Sie die Informationen zum Werbeumsatz auf Impressionsebene sofort nach dem Aufruf der Methode onPaidEvent() an Ihren bevorzugten Analyseserver. Dadurch wird sichergestellt, dass Sie nicht versehentlich Callbacks verwerfen und Datendiskrepanzen vermeiden.

AdValue

AdValue ist eine Klasse, die den Geldwert darstellt, der mit einer Anzeige erzielt wurde, einschließlich des Währungscodes des Werts und seines Präzisionstyps, wie unten codiert.

PrecisionType Beschreibung
UNKNOWN Der Anzeigenwert ist unbekannt. Dies wird zurückgegeben, wenn das LTV-Pingback aktiviert ist, aber nicht genügend Daten verfügbar sind.
ESTIMATED Ein Anzeigenwert, der aus aggregierten Daten geschätzt wird.
PUBLISHER_PROVIDED Ein vom Publisher bereitgestellter Anzeigenwert, z. B. manuelle CPMs in einer Vermittlungsgruppe.
PRECISE Der genaue Wert, der für diese Anzeige bezahlt wurde.

Im Falle der Vermittlung versucht AdMob , einen ESTIMATED-Wert für Anzeigenquellen anzugeben, dieoptimiert sind. Bei Bei nicht optimierten Anzeigenquellen oder wenn nicht genügend aggregierte Daten für eine aussagekräftige Schätzung vorhanden sind, wird der Wert PUBLISHER_PROVIDED zurückgegeben.