Mesurer les revenus publicitaires

Mesurer vos sources de revenus vous aide à comprendre la valeur vie de vos utilisateurs et à développer l'activité de 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 :

Avant de commencer

Si ce n'est pas déjà fait, assurez-vous d'effectuer les tâches suivantes :

  1. Configurez votre projet et votre application comme décrit dans Premiers pas avec Analytics.

  2. Assurez-vous d'avoir associé votre projet Firebase à un compte Google Analytics.

  3. Assurez-vous d'avoir inclus dans votre application le SDK Android v17.6.0+ ou le SDK pour les plates-formes Apple v6.34.0+.

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 les événements ad_impression chaque fois que votre utilisateur voit une publicité 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 différentes plates-formes de monétisation des annonces.

AppLovin

Swift

Remarque : Ce produit Firebase n'est pas disponible sur la cible macOS.
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

Remarque : Ce produit Firebase n'est pas disponible sur la cible macOS.
- (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

Remarque : Ce produit Firebase n'est pas disponible sur la cible macOS.
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

Remarque : Ce produit Firebase n'est pas disponible sur la cible macOS.
- (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 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 plates-formes de monétisation des 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é en utilisant un point comme séparateur décimal. Vous devrez peut-être transformer les valeurs reçues de certaines plates-formes pour qu'elles correspondent 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, il est possible qu'une plate-forme n'envoie aucune valeur.

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.

  1. DebugView
    Lorsque vous testez votre implémentation pour la première fois, utilisez DebugView pour afficher vos données de test ad_impression dans la console. Lorsque vous sélectionnez un événement ad_impression, vous pouvez examiner les paramètres que vous envoyez dans le panneau Paramètres (à droite de l'écran). Cela vous permet de vérifier que les informations traitées sont correctes.

  2. Temps réel
    Une fois votre application déployée, utilisez le Google Analytics rapport "Temps réel" pour vérifier que l'implémentation fonctionne correctement. Dans le rapport "Temps réel", consultez la fiche Nombre d'événements par nom d'événement et sélectionnez ad_impression pour afficher les détails de l'événement et du paramètre pour les 30 dernières minutes.

  3. BigQuery
    Utilisez BigQuery export pour extraire un échantillon d'événements ad_impression sur un ou plusieurs jours. Utilisez cet exemple extrait pour rechercher les problèmes, tels que les valeurs nulles ou non définies, et appliquez des correctifs à votre code pour tous les cas d'utilisation non traité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 les métriques, comme le revenu moyen par utilisateur (ARPU) et la valeur vie client (LTV).