Mesurer vos sources de revenus vous aide à comprendre la valeur à vie de vos utilisateurs et à développer votre activité applicative. Ce guide vous montre comment configurer la mesure des revenus publicitaires pour votre plateforme.
Après avoir configuré la mesure des revenus publicitaires, vous pouvez effectuer l'une des opérations suivantes :
Analysez les actions des utilisateurs qui contribuent aux revenus publicitaires générés par votre application.
Exécutez des expériences à l'aide de Firebase A/B Testing pour découvrir quelles fonctionnalités entraînent des améliorations des revenus publicitaires de votre application, ou personnalisez les expériences publicitaires à l'aide de la personnalisation de Remote Config .
Créez des audiences d'utilisateurs et personnalisez les expériences utilisateur à l'aide de Firebase Remote Config en fonction des niveaux de revenus publicitaires.
Avant que tu commences
Si ce n'est pas déjà fait, assurez-vous d'effectuer les tâches suivantes :
Configurez votre projet et votre application comme décrit dans Premiers pas avec Analytics .
Assurez-vous d'avoir lié votre projet Firebase à un compte Google Analytics.
Assurez-vous d'avoir inclus dans votre application le SDK Android v17.6.0+ ou le SDK des plateformes Apple v6.34.0+.
Mise en œuvre
Vous pouvez utiliser Google Analytics pour mesurer les revenus publicitaires générés par l'affichage d'annonces avec des plateformes de monétisation, telles qu'AdMob, AppLovin et ironSource. Pour mesurer les revenus publicitaires, vous devez enregistrer les événements ad_impression
chaque fois que votre utilisateur voit une publicité dans votre application. Ces événements contiennent des détails tels que la plate-forme publicitaire, la source, la devise et la valeur.
AdMob
Si vous utilisez la plate-forme AdMob, associez votre application AdMob à Firebase et Analytics pour activer la mesure automatique des revenus publicitaires. Le SDK Firebase pour Google Analytics enregistre automatiquement l'événement ad_impression
chaque fois que vos utilisateurs voient une impression d'annonce.
Autres plateformes de monétisation publicitaire
Des plates-formes telles que AppLovin et ironSource fournissent des données sur les revenus au niveau des impressions que vous pouvez ensuite utiliser pour enregistrer les événements ad_impression
de Google Analytics.
Les sections suivantes présentent des exemples de mise en œuvre pour différentes plates-formes de monétisation publicitaire.
AppLovin
Rapide
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, ]) } }
Objectif 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+KTX
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); }
Unité
// 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); }
ferSource
Rapide
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, ]) }
Objectif 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+KTX
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); } }
Unité
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); } }
Considérations relatives à la mise en œuvre
Pour permettre à Google Ads de traiter votre ad_impression
, assurez-vous d'inclure à la fois les paramètres currency
et value
(décrits ci-dessous). Les deux paramètres doivent être aussi précis que possible pour éviter de surévaluer ou de sous-évaluer les utilisateurs.
Paramètre de devise
Le paramètre currency
( iOS+ | Android | Unity ) doit être envoyé sous forme de chaîne au format ISO_4217 à trois lettres (par exemple, "USD"
). Certaines plateformes de monétisation publicitaire omettent la devise, ce qui peut vous obliger à coder en dur le paramètre.
Paramètre de valeur
Le paramètre value
( iOS+ | Android | Unity ) doit être envoyé en utilisant un point comme séparateur décimal. Vous devrez peut-être transformer les valeurs reçues de certaines plates-formes pour les adapter au format requis ci-dessus. Certaines plateformes localisent les formats numériques et utilisent des virgules comme séparateurs décimaux. Dans certains cas, une plateforme peut ne pas envoyer de valeur du tout.
De plus, la valeur doit être un type numérique tel qu'un double ou un long. Par exemple, 1000.01
, 0.001
et 1.00
sont tous valides
Validation
Google Analytics propose plusieurs fonctionnalités pour valider votre mise en œuvre tout au long du cycle de développement.
Vue de débogage
Lors du premier test de votre implémentation, utilisez DebugView pour voir vos données de testad_impression
dans la console. Lorsque vous sélectionnez un événementad_impression
, vous pouvez consulter les paramètres que vous envoyez dans le panneau Paramètres (à droite de l'écran). Cela vous aide à confirmer que les informations correctes sont en cours de traitement.Temps réel
Une fois que vous avez déployé votre application, utilisez le rapport Google Analytics Realtime pour confirmer que la mise en œuvre fonctionne correctement. Dans le rapport en temps réel, affichez la carte Nombre d'événements par nom d'événement et sélectionnez ad_impression pour voir les détails de l'événement et des paramètres des 30 dernières minutes.BigQuery
Utilisez BigQuery Export pour extraire un échantillon d'un ou plusieurs jours d'événementsad_impression
. Utilisez cet exemple extrait pour rechercher des problèmes, tels que des valeurs nulles ou non définies, et appliquez des correctifs à votre code pour tout cas d'utilisation non géré.
Prochaines étapes
Visitez votre tableau de bord Analytics dans la console Firebase ou dans votre propriété Analytics liée dans la console Analytics. Les revenus publicitaires sont pris en compte dans des mesures, telles que le revenu moyen par utilisateur (ARPU) et la valeur à vie (LTV).