La misurazione delle fonti di entrate ti aiuta a comprendere il lifetime value dei tuoi utenti e a far crescere la tua app. Questa guida mostra come configurare la misurazione delle entrate pubblicitarie per la tua piattaforma.
Dopo aver configurato la misurazione delle entrate pubblicitarie, puoi eseguire una delle seguenti operazioni:
Analizzare le azioni degli utenti che contribuiscono alle entrate pubblicitarie generate dalla tua app.
Eseguire esperimenti utilizzando Firebase A/B Testing per scoprire quali funzionalità migliorano le entrate pubblicitarie della tua app oppure creare esperienze pubblicitarie su misura utilizzando la personalizzazione Remote Config.
Creare segmenti di pubblico di utenti e personalizzare le esperienze utente utilizzando Firebase Remote Config in base ai livelli di entrate pubblicitarie.
Prima di iniziare
Se non l'hai ancora fatto, assicurati di completare le seguenti attività:
Configurare il progetto e l'app come descritto in Guida introduttiva a Analytics.
Assicurati di aver collegato il progetto Firebase a un Google Analytics account.
Assicurati di aver incluso nella tua app l'SDK Android v17.6.0+ o l'SDK per le piattaforme Apple v6.34.0+.
Implementazione
Puoi utilizzare Google Analytics per misurare le entrate pubblicitarie generate dalla
visualizzazione di annunci con piattaforme di monetizzazione, come AdMob, AppLovin e
ironSource. Per misurare le entrate pubblicitarie, devi registrare gli eventi
ad_impression
ogni volta che l'utente vede una pubblicità nella tua app. Questi eventi contengono
dettagli come la piattaforma pubblicitaria, l'origine, la valuta e il valore.
AdMob
Se utilizzi la piattaforma AdMob,
collega la tua app AdMob a Firebase e Analytics
per attivare la misurazione automatica delle entrate pubblicitarie. L'SDK Firebase per
Google Analytics registra automaticamente l'evento ad_impression ogni volta che
gli utenti vedono un'impressione dell'annuncio.
Altre piattaforme di monetizzazione pubblicitaria
Piattaforme come AppLovin e ironSource forniscono dati sulle entrate a livello di impressione
che puoi utilizzare per registrare gli Google Analytics
ad_impression
eventi.
Le sezioni seguenti mostrano esempi di implementazione per alcune piattaforme di monetizzazione pubblicitaria.
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); } }
Considerazioni sull'implementazione
Per consentire a Google Ads di elaborare
ad_impression, assicurati di includere
sia il parametro currency sia il parametro value (descritti di seguito). Entrambi i parametri devono essere il più accurati possibile per evitare di sopravvalutare o sottovalutare gli utenti.
Parametro valuta
Il parametro currency (iOS+
| Android
| Unity)
deve essere inviato come stringa in formato ISO_4217
di tre lettere (ad esempio, "USD"). Alcune piattaforme di monetizzazione pubblicitaria omettono la valuta,
il che potrebbe richiedere di codificare il parametro.
Parametro valore
Il parametro value
(iOS+
| Android
| Unity)
deve essere inviato utilizzando un punto come separatore decimale. Potresti dover trasformare i valori ricevuti da alcune piattaforme per adattarli al formato richiesto sopra. Alcune piattaforme localizzano i formati numerici e utilizzano le virgole come separatori decimali. In alcuni casi, una piattaforma potrebbe non inviare affatto un valore.
Inoltre, il valore deve essere di tipo numerico, ad esempio double o long.
Ad esempio, 1000.01, 0.001 e 1.00 sono tutti
validi
Convalida
Google Analytics offre diverse funzionalità per convalidare l'implementazione durante il ciclo di sviluppo.
DebugView
Quando testi per la prima volta l'implementazione, utilizza DebugView per visualizzare i dati di testad_impressionnella console. Quando selezioni un eventoad_impression, puoi esaminare i parametri che stai inviando nel riquadro Parametri (sul lato destro dello schermo). In questo modo puoi verificare che le informazioni corrette vengano elaborate.In tempo reale
Dopo aver eseguito il deployment dell'app, utilizza il Google Analytics report in tempo reale per verificare che l'implementazione funzioni correttamente. Nel report in tempo reale, visualizza la scheda Conteggio eventi per nome evento e seleziona ad_impression per visualizzare i dettagli dell'evento e dei parametri degli ultimi 30 minuti.BigQuery
Utilizza l'esportazione BigQuery per estrarre un campione di eventiad_impressiondi uno o più giorni. Utilizza questo campione estratto per cercare problemi, ad esempio valori zero o non impostati, e applica correzioni al codice per eventuali casi d'uso non gestiti.
Passaggi successivi
Visita la dashboard Analytics nella console Firebase o nella proprietà Analytics collegata nella console Analytics. Le entrate pubblicitarie vengono prese in considerazione nelle metriche, come le entrate medie per utente (ARPU) e il lifetime value (LTV).