Reklam gelirini ölçme

Gelir kaynaklarınızı ölçmek, işletmenizin yaşam boyu değerini anlamanıza ve uygulama işinizi büyütmenize yardımcı olur. Bu kılavuzda, reklam gelirini nasıl ayarlayacağınız gösterilmektedir. ne olduğuna karar vermelisiniz.

Reklam geliri ölçümünü ayarladıktan sonra, takip etmek için:

Başlamadan önce

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

  1. Projenizi ve uygulamanızı şurada açıklandığı gibi ayarlayın: Analytics'i Kullanmaya Başlama.

  2. Firebase projenizi bir Google Analytics hesabınız.

  3. Android SDK 17.6.0+ veya Apple platformları SDK v6.34.0+.

Uygulama

Reklam gelirinden elde edilen reklam gelirini ölçmek için Google Analytics'i AdMob, AppLovin ve ironSource. Reklam gelirini ölçmek için ad_impression etkinlik kullanıcı uygulamanızda reklam gördüğünde. Bu etkinliklerde şunlar yer alır: reklam platformu, kaynak, para birimi ve değer gibi ayrıntılara yer verir.

AdMob

AdMob platformunu kullanıyorsanız AdMob uygulamanızı Firebase ve Analytics'e bağlama Böylece reklam gelirinin otomatik olarak ölçülmesini sağlar. Firebase SDK'sı: Google Analytics her seferinde ad_impression etkinliğini otomatik olarak günlüğe kaydeder Kullanıcılarınıza gösterilecek reklam gösterimi var.

Reklamdan para kazanmayla ilgili diğer platformlar

AppLovin ve ironSource gibi platformlar gösterim düzeyinde gelir verileri sağlar sonra da Google Analytics'i günlüğe kaydetmek için ad_impression etkinlikler.

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

AppLovin

Swift

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

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);
}

DemirKaynak

Swift

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

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'in ad_impression, şunları eklediğinizden emin olun: currency ve value parametreleri (aşağıda açıklanmıştır). Her ikisi fazla değer biçilmesini veya bütçenin altında kalmasını önlemek için parametrelerin olabildiğince doğru en iyi uygulamaları paylaşacağım.

Para birimi parametresi

currency parametresi (iOS+) | Android | Unity) girin üç harfli bir dize olarak gönderilmelidir. ISO_4217 biçiminde (örneğin, "USD") olmalıdır. Bazı reklamdan para kazanma platformlarında para birimi kullanılmaz. Bu durumda parametreyi kod olarak gömmeniz gerekebilir.

Değer parametresi

value parametresi (iOS+) | Android | Unity) girin ondalık ayırıcı olarak nokta kullanılarak gönderilmelidir. Proje başladıktan sonra bazı platformlardan alınan değerlerin yukarıdaki gerekli biçime uymasını sağlayın. Biraz platformları sayısal biçimleri yerelleştirir ve ondalık ayırıcı olarak virgül kullanır. İçinde bazı durumlarda platform hiç değer göndermeyebilir.

Ayrıca, değer çift veya uzun gibi sayısal bir tür olmalıdır. Örneğin, 1000.01, 0.001 ve 1.00 değerlerinin tümü geçerli

Doğrulama

Google Analytics, uygulamanızı doğrulamak için birden fazla özellik sunar ilk adımıdır.

  1. DebugView
    Uygulamanızı ilk test ederken, Test ad_impression verilerinizi görmek için DebugView'ı tıklayın kontrol edin. Bir ad_impression etkinliği seçtiğinizde Parametreler paneline (sağ tarafta) gönderdiğiniz parametreler görünür). Böylece, girdiğiniz bilgilerin doğru işlendi.

  2. Gerçek zamanlı
    Uygulamanızı dağıttıktan sonra Google Analytics'i kullanın Anlık rapor kontrol edin. Gerçek zamanlı raporda Etkinlik adına göre etkinlik sayısı kartını görüntüleyin ve görmek için ad_impression etkinlik ve parametre ayrıntılarını görebilirsiniz.

  3. BigQuery
    Bir verileri ayıklamak için BigQuery Export'u kullanın. bir veya daha fazla günlük ad_impression etkinlik örneği. Çıkarılan bunu kullan sıfır veya ayarlanmamış değerler gibi sorunları aramak ve düzeltmeleri uygulamak için örnek kodunuza eklemeniz gerekebilir.

Sonraki adımlar

Firebase konsolunda veya bağladığınız Analytics mülkünü görüntüleyin. Reklam geliri hesaba katılır Kullanıcı Başına Ortalama Gelir (KBOG) ve Yaşam Boyu gibi Değer (YBD).