Pomiar źródeł przychodów pomaga poznać wartość użytkowników od początku śledzenia i rozwijać swoją działalność związaną z aplikacjami. Z tego przewodnika dowiesz się, jak skonfigurować pomiar przychodów z reklam na swojej platformie.
Po skonfigurowaniu pomiaru przychodów z reklam możesz wykonać dowolne z tych działań:
Analizuj działania użytkowników, które przyczyniają się do przychodów z reklam generowanych przez Twoją aplikację.
Przeprowadzaj eksperymenty za pomocą Firebase A/B Testing, aby sprawdzić, które funkcje zwiększają przychody z reklam w aplikacji, lub personalizuj reklamy za pomocą Remote Configpersonalizacji.
Twórz listy odbiorców i dostosowuj środowisko użytkownika za pomocą Firebase Remote Config na podstawie poziomu przychodów z reklam.
Zanim zaczniesz
Jeśli jeszcze tego nie zrobisz, wykonaj te czynności:
Skonfiguruj projekt i aplikację zgodnie z instrukcjami podanymi w artykule Pierwsze kroki z Analytics.
Upewnij się, że projekt Firebase jest połączony z kontem Google Analytics.
Upewnij się, że Twoja aplikacja zawiera pakiet SDK na Androida w wersji 17.6.0 lub nowszej albo pakiet SDK na platformy Apple w wersji 6.34.0 lub nowszej.
Implementacja
Możesz używać Google Analytics do pomiaru przychodów z reklam generowanych przez wyświetlanie reklam na platformach do generowania przychodów, takich jak AdMob, AppLovin i ironSource. Aby mierzyć przychody z reklam, musisz rejestrować ad_impression
zdarzenia, gdy użytkownik zobaczy reklamę w Twojej aplikacji. Te zdarzenia zawierają szczegóły takie jak platforma reklamowa, źródło, waluta i wartość.
AdMob
Jeśli korzystasz z platformy AdMob, połącz aplikację AdMob z FirebaseAnalytics, aby włączyć automatyczne pomiary przychodów z reklam. Pakiet SDK Firebase automatycznie rejestruje zdarzenie ad_impression
za każdym razem, gdy użytkownicy widzą wyświetlenie reklamy.Google Analytics
Inne platformy do generowania przychodów z reklam
Platformy takie jak AppLovin i ironSource udostępniają dane o przychodach na poziomie wyświetlenia, których możesz używać do rejestrowania zdarzeń Google Analytics
ad_impression
.
W sekcjach poniżej znajdziesz przykłady implementacji na kilku różnych platformach do zarabiania na reklamach.
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); }
Unity
// 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); } }
Unity
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); } }
Uwagi o wdrażaniu
Aby umożliwić Google Ads przetwarzanie ad_impression
, uwzględnij parametry currency
i value
(opisane poniżej). Oba parametry powinny być jak najdokładniejsze, aby zapobiec przeszacowaniu lub niedoszacowaniu wartości użytkowników.
Parametr waluty
Parametr currency
(iOS+ | Android | Unity) powinien być wysyłany jako ciąg znaków w 3-literowym formacie ISO_4217 (np. "USD"
). Niektóre platformy do zarabiania na reklamach pomijają walutę, co może wymagać zakodowania parametru na stałe.
Parametr wartości
Parametr value
(iOS+ | Android | Unity) powinien być przesyłany z kropką jako separatorem dziesiętnym. Wartości otrzymane z niektórych platform mogą wymagać przekształcenia, aby pasowały do wymaganego formatu. Niektóre platformy lokalizują formaty liczbowe i używają przecinków jako separatorów dziesiętnych. W niektórych przypadkach platforma może w ogóle nie wysyłać wartości.
Wartość powinna być też typu liczbowego, np. double lub long.
Na przykład 1000.01
, 0.001
i 1.00
są prawidłowe.
Weryfikacja
Google Analytics oferuje wiele funkcji, które umożliwiają sprawdzanie poprawności implementacji na każdym etapie cyklu programowania.
DebugView
Podczas pierwszego testowania implementacji użyj DebugView, aby wyświetlić w konsoli dane testowead_impression
. Gdy wybierzesz zdarzeniead_impression
, możesz sprawdzić parametry, które wysyłasz, w panelu Parametry (po prawej stronie ekranu). Dzięki temu możesz sprawdzić, czy przetwarzane są prawidłowe informacje.Czas rzeczywisty
Po wdrożeniu aplikacji użyj Google Analytics raportu Czas rzeczywisty aby sprawdzić, czy implementacja działa prawidłowo. W raporcie Czas rzeczywisty otwórz kartę Liczba zdarzeń według nazwy zdarzenia i kliknij ad_impression, aby wyświetlić szczegóły zdarzenia i jego parametrów z ostatnich 30 minut.BigQuery
Użyj BigQueryeksportu, aby wyodrębnić próbkę zdarzeńad_impression
z 1 lub kilku dni. Użyj wyodrębnionej próbki, aby wyszukać problemy, takie jak wartości zerowe lub nieustawione, i zastosować poprawki w kodzie w przypadku nieobsługiwanych przypadków użycia.
Dalsze kroki
Otwórz Analytics panel w Firebase konsoli lub w połączonejAnalytics usłudze w Analytics konsoli. Przychody z reklam są uwzględniane w danych, takich jak średnie przychody na użytkownika (ARPU) i wartość od początku śledzenia (LTV).