Reklam gelirini ölçme

Gelir kaynaklarınızı ölçmek, kullanıcılarınızın yaşam boyu değerini anlamanıza ve uygulama işinizi büyütmenize yardımcı olur. Bu kılavuzda, platformunuz için reklam geliri ölçümünü nasıl ayarlayacağınız gösterilmektedir.

Reklam geliri ölçümünü ayarladıktan sonra aşağıdakilerden herhangi birini yapabilirsiniz:

Başlamadan önce

Henüz yapmadıysanız aşağıdaki görevleri tamamladığınızdan emin olun:

  1. Projenizi ve uygulamanızı ile Başlarken bölümünde açıklandığı şekilde ayarlayın.Analytics

  2. Firebase projenizi bir Google Analytics hesabına bağladığınızdan emin olun.

  3. Uygulamanıza Android SDK v17.6.0+ veya Apple platformları SDK v6.34.0+ sürümünü eklediğinizden emin olun.

Uygulama

Google Analytics, AppLovin ve ironSource gibi para kazanma platformlarıyla reklam gösteriminden elde edilen reklam gelirini ölçmek için Google Analytics kullanabilirsiniz.AdMob Reklam gelirini ölçmek için kullanıcınız uygulamanızda bir reklam gördüğünde ad_impression etkinliklerini günlüğe kaydetmeniz gerekir. Bu etkinlikler, reklam platformu, kaynak, para birimi ve değer gibi ayrıntıları içerir.

AdMob

AdMob platformunu kullanıyorsanız reklam gelirinin otomatik olarak ölçülmesini sağlamak için AdMob uygulamanızı Firebase'e ve Analytics bağlayın. Firebase SDK'sı, kullanıcılarınız bir reklam gösterimi gördüğünde Google Analytics etkinliğini otomatik olarak ad_impression kaydeder.

Diğer reklamdan para kazanma platformları

AppLovin ve ironSource gibi platformlar, gösterim düzeyinde gelir verileri sağlar. Bu verileri daha sonra Google Analytics ad_impression etkinliklerini kaydetmek için kullanabilirsiniz.

Aşağıdaki bölümlerde, birkaç farklı reklamdan para kazanma platformu için uygulama örnekleri gösterilmektedir.

AppLovin

Swift

Not: Bu Firebase ürünü macOS hedefinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS hedefinde kullanılamaz.
- (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

Not: Bu Firebase ürünü macOS hedefinde kullanılamaz.
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

Not: Bu Firebase ürünü macOS hedefinde kullanılamaz.
- (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);
  }
}

Uygulamada dikkat edilmesi gereken hususlar

Google Ads'nın ad_impression işlemesine izin vermek için hem currency hem de value parametrelerini (aşağıda açıklanmıştır) eklediğinizden emin olun. Kullanıcılara fazla veya az değer verilmesini önlemek için her iki parametre de mümkün olduğunca doğru olmalıdır.

Para birimi parametresi

currency parametresi (iOS+ | Android | Unity) üç harfli bir dize olarak gönderilmelidir. ISO_4217 biçiminde (örneğin, "USD"). Bazı reklamdan para kazanma platformları para birimini atlar. Bu durumda parametreyi sabit kodlamanız gerekebilir.

Değer parametresi

value parametresi (iOS+ | Android | Unity) ondalık ayırıcı olarak nokta kullanılarak gönderilmelidir. Bazı platformlardan alınan değerleri yukarıdaki gerekli biçime uyacak şekilde dönüştürmeniz gerekebilir. Bazı platformlar sayısal biçimleri yerelleştirir ve ondalık ayırıcı olarak virgül kullanır. Bazı durumlarda platform, hiç değer göndermeyebilir.

Ayrıca değer, double veya long gibi sayısal bir tür olmalıdır. Örneğin, 1000.01, 0.001 ve 1.00 değerleri geçerlidir.

Doğrulama

Google Analytics, geliştirme döngüsü boyunca uygulamanızı doğrulamanıza yardımcı olacak çeşitli özellikler sunar.

  1. DebugView
    Uygulamanızı ilk kez test ederken, test ad_impression verilerinizi konsolda görmek için DebugView'u kullanın. Bir ad_impression etkinliği seçtiğinizde, gönderdiğiniz parametreleri Parametreler panelinde (ekranın sağ tarafında) inceleyebilirsiniz. Bu sayede, doğru bilgilerin işlendiğini doğrulayabilirsiniz.

  2. Anlık
    Uygulamanızı dağıttıktan sonra, uygulamanın doğru şekilde çalıştığını doğrulamak için Google Analytics anlık raporu kullanın. Anlık raporda, Etkinlik adına göre etkinlik sayısı kartını görüntüleyin ve son 30 dakikaya ait etkinlik ve parametre ayrıntılarını görmek için ad_impression'ı seçin.

  3. BigQuery
    ad_impression etkinliklerinin bir veya daha fazla güne ait bir örneğini ayıklamak için BigQuery dışa aktarma özelliğini kullanın. Sıfır veya ayarlanmamış değerler gibi sorunları aramak için bu çıkarılan örneği kullanın ve işlenmemiş kullanım alanları için kodunuza düzeltmeler uygulayın.

Sonraki adımlar

Analytics konsolundaki Analytics kontrol panelinizi veya Analytics konsolundaki bağlı Analytics mülkünüzü ziyaret edin.Firebase Reklam geliri, kullanıcı başına ortalama gelir (KBOG) ve yaşam boyu değer (YBD) gibi metriklerde dikkate alınır.