Wenn Sie Ihre Umsatzquellen analysieren, können Sie den Lifetime-Wert Ihrer Nutzer besser nachvollziehen und Ihren App-Umsatz steigern. In diesem Leitfaden erfahren Sie, wie Sie die Messung von Werbeeinnahmen für Ihre Plattform einrichten.
Nachdem Sie die Analyse von Werbeeinnahmen eingerichtet haben, haben Sie folgende Möglichkeiten:
Nutzeraktionen analysieren, die zum Anzeigenumsatz Ihrer App beitragen
Führen Sie Tests mit Firebase A/B Testing durch, um herauszufinden, welche Funktionen Ihren Umsatz mit App-Anzeigen steigern. Oder personalisieren Sie Anzeigen mit Remote Config-Personalisierung.
Nutzerzielgruppen erstellen und Nutzererfahrungen anpassen mit Firebase Remote Config basierend auf dem Anzeigenumsatz.
Hinweis
Führen Sie ggf. die folgenden Schritte aus:
Richten Sie Ihr Projekt und Ihre App wie unter Erste Schritte mit Analytics beschrieben ein.
Achten Sie darauf, dass Sie Ihr Firebase-Projekt mit einem Google Analytics-Konto verknüpft haben.
Achten Sie darauf, dass Sie das Android SDK v17.6.0+ oder das Apple-Plattformen-SDK v6.34.0+ in Ihre App eingebunden haben.
Implementierung
Mit Google Analytics können Sie Werbeeinnahmen erfassen, die durch die Auslieferung von Anzeigen über Monetarisierungsplattformen wie AdMob, AppLovin und ironSource erzielt werden. Wenn Sie Werbeeinnahmen erfassen möchten, müssen Sie ad_impression
-Ereignisse protokollieren, wenn ein Nutzer eine Anzeige in Ihrer App sieht. Diese Ereignisse enthalten Details wie die Anzeigenplattform, die Quelle, die Währung und den Wert.
AdMob
Wenn Sie die AdMob-Plattform verwenden, verknüpfen Sie Ihre AdMob-App mit Firebase und Analytics,
um die automatische Erfassung von Werbeeinnahmen zu ermöglichen. Das Firebase SDK für
Google Analytics protokolliert das Ereignis ad_impression
automatisch, wenn Ihre Nutzer eine Anzeigenimpression sehen.
Andere Plattformen zur Anzeigenmonetarisierung
Plattformen wie AppLovin und ironSource liefern Umsatzdaten auf Impressionsebene, die Sie dann verwenden können, um Google Analytics-Ereignisse ad_impression
zu protokollieren.
In den folgenden Abschnitten finden Sie Implementierungsbeispiele für einige verschiedene Plattformen zur Anzeigenmonetarisierung.
AppLovin
Swift
func didPayRevenue(_ impressionData: MAAd?) { if let impressionData = impressionData { Analytics.logEvent( AnalyticsEventAdImpression, parameters: [ AnalyticsParameterAdPlatform: "AppLovin", AnalyticsParameterAdUnitName: impressionData.adUnitIdentifier, AnalyticsParameterAdFormat: impressionData.format, AnalyticsParameterValue: impressionData.revenue, AnalyticsParameterCurrency: "USD", // All Applovin revenue is sent in USD AnalyticsParameterAdSource: impressionData.networkName, ]) } }
Objective-C
- (void)didPayRevenueForAd:(MAAd *)impressionData { [FIRAnalytics logEventWithName:kFIREventAdImpression parameters: @{ kFIRParameterAdPlatform: @"AppLovin", kFIRParameterAdSource: impressionData.networkName, kFIRParameterAdFormat: impressionData.format, kFIRParameterAdUnitName: impressionData.adUnitIdentifier, kFIRParameterCurrency: @"USD", // All Applovin revenue is sent in USD kFIRParameterValue: impressionData.revenue }]; }
Kotlin
override fun onAdRevenuePaid(impressionData: MaxAd?) { impressionData?.let { firebaseAnalytics = Firebase.analytics firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) { param(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin") param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.adUnitId) param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.format.label) param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.networkName) param(FirebaseAnalytics.Param.VALUE, impressionData.revenue) param(FirebaseAnalytics.Param.CURRENCY, "USD") // All Applovin revenue is sent in USD } } }
Java
@Override public void onAdRevenuePaid(MaxAd impressionData) { double revenue = impressionData.getRevenue(); // In USD mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); Bundle params = new Bundle(); params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin"); params.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getNetworkName()); params.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getFormat().getLabel()); params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getAdUnitId()); params.putDouble(FirebaseAnalytics.Param.VALUE, revenue); params.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); // All Applovin revenue is sent in USD mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params); }
Einheit
// Attach callbacks based on the ad format(s) you are using MaxSdkCallbacks.Interstitial.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.Rewarded.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.Banner.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; MaxSdkCallbacks.MRec.OnAdRevenuePaidEvent += OnAdRevenuePaidEvent; private void OnAdRevenuePaidEvent(string adUnitId, MaxSdkBase.AdInfo impressionData) { double revenue = impressionData.Revenue; var impressionParameters = new[] { new Firebase.Analytics.Parameter("ad_platform", "AppLovin"), new Firebase.Analytics.Parameter("ad_source", impressionData.NetworkName), new Firebase.Analytics.Parameter("ad_unit_name", impressionData.AdUnitIdentifier), new Firebase.Analytics.Parameter("ad_format", impressionData.AdFormat), new Firebase.Analytics.Parameter("value", revenue), new Firebase.Analytics.Parameter("currency", "USD"), // All AppLovin revenue is sent in USD }; Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", impressionParameters); }
ironSource
Swift
func impressionDataDidSucceed(_ impressionData: ISImpressionData!) { Analytics.logEvent( AnalyticsEventAdImpression, parameters: [ AnalyticsParameterAdPlatform: "ironSource", AnalyticsParameterAdSource: impressionData.ad_network ?? "No ad_network", AnalyticsParameterAdFormat: impressionData.ad_unit ?? "No ad_unit", AnalyticsParameterAdUnitName: impressionData.instance_name ?? "No instance_name", AnalyticsParameterCurrency: "USD", AnalyticsParameterValue: impressionData.revenue ?? 0, ]) }
Objective-C
- (void)impressionDataDidSucceed:(ISImpressionData *)impressionData { [FIRAnalytics logEventWithName:kFIREventAdImpression parameters:@{ kFIRParameterAdPlatform: @"ironSource", kFIRParameterAdSource: impressionData.ad_network, kFIRParameterAdFormat: impressionData.ad_unit, kFIRParameterAdUnitName: impressionData.instance_name, kFIRParameterCurrency: @"USD", kFIRParameterValue: impressionData.revenue }]; }
Kotlin
override fun onImpressionSuccess(impressionData: ImpressionData) { // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is // opened. // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + // impressionData) firebaseAnalytics = Firebase.analytics firebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION) { param(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource") param(FirebaseAnalytics.Param.AD_SOURCE, impressionData.adNetwork) param(FirebaseAnalytics.Param.AD_FORMAT, impressionData.adUnit) param(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.instanceName) param(FirebaseAnalytics.Param.CURRENCY, "USD") param(FirebaseAnalytics.Param.VALUE, impressionData.revenue) } }
Java
@Override public void onImpressionSuccess(ImpressionData impressionData) { // The onImpressionSuccess will be reported when the rewarded video and interstitial ad is opened. // For banners, the impression is reported on load success. Log.d(TAG, "onImpressionSuccess" + impressionData); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); if (impressionData != null) { Bundle bundle = new Bundle(); bundle.putString(FirebaseAnalytics.Param.AD_PLATFORM, "ironSource"); bundle.putString(FirebaseAnalytics.Param.AD_SOURCE, impressionData.getAdNetwork()); bundle.putString(FirebaseAnalytics.Param.AD_FORMAT, impressionData.getAdUnit()); bundle.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, impressionData.getInstanceName()); bundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD"); bundle.putDouble(FirebaseAnalytics.Param.VALUE, impressionData.getRevenue()); mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, bundle); } }
Einheit
private void ImpressionSuccessEvent(IronSourceImpressionData impressionData) { if (impressionData != null) { Firebase.Analytics.Parameter[] AdParameters = { new Firebase.Analytics.Parameter("ad_platform", "ironSource"), new Firebase.Analytics.Parameter("ad_source", impressionData.adNetwork), new Firebase.Analytics.Parameter("ad_unit_name", impressionData.getInstanceName), new Firebase.Analytics.Parameter("ad_format", impressionData.getAdUnit), new Firebase.Analytics.Parameter("currency","USD"), new Firebase.Analytics.Parameter("value", impressionData.getRevenue) }; Firebase.Analytics.FirebaseAnalytics.LogEvent("ad_impression", AdParameters); } }
Hinweise zur Implementierung
Damit Google Ads Ihre ad_impression
verarbeiten kann, müssen Sie sowohl den Parameter currency
als auch den Parameter value
(siehe unten) einfügen. Beide Parameter sollten so genau wie möglich sein, um eine Über- oder Unterbewertung von Nutzern zu vermeiden.
Währungsparameter
Der Parameter currency
(iOS+ | Android | Unity) sollte als String im dreistelligen ISO_4217-Format gesendet werden (z. B. "USD"
). Bei einigen Plattformen zur Anzeigenmonetarisierung wird die Währung ausgelassen. In diesem Fall müssen Sie den Parameter möglicherweise fest codieren.
Wertparameter
Der Parameter value
(iOS+ | Android | Unity) sollte mit einem Punkt als Dezimaltrennzeichen gesendet werden. Möglicherweise müssen Sie die von einigen Plattformen empfangenen Werte in das oben beschriebene erforderliche Format umwandeln. Auf einigen Plattformen werden numerische Formate lokalisiert und Kommas als Dezimaltrennzeichen verwendet. In einigen Fällen sendet eine Plattform möglicherweise überhaupt keinen Wert.
Außerdem sollte der Wert ein numerischer Typ wie „double“ oder „long“ sein.
Beispiele: 1000.01
, 0.001
und 1.00
sind gültig.
Validierung
Google Analytics bietet mehrere Funktionen, mit denen Sie Ihre Implementierung während des gesamten Entwicklungszyklus validieren können.
DebugView
Verwenden Sie beim ersten Testen Ihrer Implementierung DebugView, um Ihre Testdaten fürad_impression
in der Konsole zu sehen. Wenn Sie einad_impression
-Ereignis auswählen, können Sie die Parameter, die Sie senden, im Bereich Parameter (auf der rechten Seite des Bildschirms) ansehen. So können Sie bestätigen, dass die richtigen Informationen verarbeitet werden.Echtzeit
Nachdem Sie Ihre App bereitgestellt haben, können Sie mit dem Google Analytics Echtzeitbericht prüfen, ob die Implementierung korrekt funktioniert. Rufen Sie den Echtzeitbericht auf, sehen Sie sich die Karte Ereignisanzahl nach Ereignisname an und wählen Sie ad_impression aus, um die Ereignis- und Parameterdetails für die letzten 30 Minuten zu sehen.BigQuery
Verwenden Sie den BigQuery-Export, um eine Stichprobe vonad_impression
-Ereignissen für einen oder mehrere Tage zu extrahieren. Anhand dieses extrahierten Beispiels können Sie nach Problemen wie Null- oder nicht festgelegten Werten suchen und Korrekturen für nicht behandelte Anwendungsfälle in Ihrem Code vornehmen.
Nächste Schritte
Rufen Sie das Analytics-Dashboard in der Firebase-Konsole oder in Ihrer verknüpften Analytics-Property in der Analytics-Konsole auf. Werbeeinnahmen werden in Messwerte wie den durchschnittlichen Umsatz pro Nutzer (ARPU) und den Lifetime-Wert (LTV) einbezogen.