Mesurer vos sources de revenus vous aide à comprendre la valeur vie client de vos utilisateurs et à développer votre activité liée à votre application. Ce guide vous explique comment configurer la mesure des revenus publicitaires pour votre plate-forme.
Une fois la mesure des revenus publicitaires configurée, vous pouvez effectuer les opérations suivantes:
Analysez les actions des utilisateurs qui contribuent aux revenus publicitaires générés par votre application.
Effectuez des tests à l'aide de Firebase A/B Testing pour identifier les fonctionnalités qui améliorent les revenus publicitaires de votre application, ou personnalisez les expériences publicitaires à l'aide de la personnalisation 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 de commencer
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 la section Premiers pas avec Analytics.
Assurez-vous d'avoir associé votre projet Firebase à un compte Google Analytics.
Assurez-vous d'avoir inclus dans votre application le SDK Android 17.6.0 ou version ultérieure ou le SDK des plates-formes Apple 6.34.0 ou version ultérieure.
Implémentation
Vous pouvez utiliser Google Analytics pour mesurer les revenus publicitaires générés par la diffusion d'annonces avec des plates-formes de monétisation telles que AdMob, AppLovin et ironSource. Pour mesurer les revenus publicitaires, vous devez enregistrer des événements ad_impression
chaque fois qu'un utilisateur voit une annonce dans votre application. Ces événements contiennent des informations telles 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 plates-formes de monétisation des annonces
Des plates-formes telles qu'AppLovin et ironSource fournissent des données sur les revenus au niveau des impressions que vous pouvez ensuite utiliser pour consigner les événements Google Analytics
ad_impression
.
Les sections suivantes présentent des exemples d'implémentation pour plusieurs plates-formes de monétisation des annonces.
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); } }
Observations concernant la mise en œuvre
Pour permettre à Google Ads de traiter votre ad_impression
, veillez à 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 surestimer ou de sous-estimer 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 plates-formes de monétisation d'annonces omettent la devise, ce qui peut vous obliger à coder en dur le paramètre.
Paramètre "value"
Le paramètre value
(iOS+ | Android | Unity) doit être envoyé à l'aide d'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 plates-formes localisent les formats numériques et utilisent des virgules comme séparateurs décimaux. Dans certains cas, une plate-forme peut ne pas envoyer de valeur du tout.
De plus, la valeur doit être de type numérique, comme 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 implémentation tout au long du cycle de développement.
DebugView
Lorsque vous testez votre implémentation pour la première fois, utilisez DebugView pour afficher vos donnéesad_impression
de test 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 (sur le côté droit de l'écran). Cela vous permet de vérifier que les informations correctes sont traitées.Temps réel
Une fois que vous avez déployé votre application, utilisez le Google Analytics rapport "Temps réel" pour vérifier que l'implémentation fonctionne correctement. Dans le rapport "Temps réel", accédez à la fiche Nombre d'événements par nom d'événement, puis sélectionnez ad_impression pour afficher les détails de l'événement et des paramètres au cours des 30 dernières minutes.BigQuery
Utilisez l'exportation BigQuery pour extraire un échantillon d'un ou de 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 appliquer des correctifs à votre code pour tous les cas d'utilisation non gérés.
Étapes suivantes
Accédez à votre tableau de bord Analytics dans la console Firebase ou dans votre propriété Analytics associée dans la console Analytics. Les revenus publicitaires sont pris en compte dans des métriques telles que le revenu moyen par utilisateur (ARPU) et la valeur vie (LTV).