Mesurer les revenus publicitaires

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 :

Avant que tu commences

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 lié 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 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

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,
      ])
  }
}

Objectif 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+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

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,
    ])
}

Objectif 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+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.

  1. Vue de débogage
    Lors du premier test de votre implémentation, utilisez DebugView pour voir vos données de test ad_impression dans la console. Lorsque vous sélectionnez un événement ad_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.

  2. 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.

  3. BigQuery
    Utilisez BigQuery Export pour extraire un échantillon d'un ou plusieurs jours d'événements ad_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).