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
- In der AdMob-Benutzeroberfläche muss die Funktion für Werbeeinnahmen auf Impressionsebene aktiviert sein.
- Importieren Sie das Google Mobile Ads SDK 21.1.0 oder höher.
- Arbeiten Sie den Startleitfaden durch.
Bevor Sie Werbeeinnahmen auf Impressionsebene erhalten können, müssen Sie mindestens ein Anzeigenformat implementieren:
Bezahlter Event-Handler
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.