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ılavuz, platformunuz için reklam geliri ölçümünü nasıl ayarlayacağınızı gösterir.
Reklam geliri ölçümünü ayarladıktan sonra aşağıdakilerden herhangi birini yapabilirsiniz:
Uygulamanızın ürettiği reklam gelirine katkıda bulunan kullanıcı işlemlerini analiz edin.
Uygulama reklam gelirinizde hangi özelliklerin iyileşme sağladığını bulmak için Firebase A/B Testini kullanarak denemeler yapın veya Remote Config kişiselleştirmeyi kullanarak reklam deneyimlerini kişiselleştirin.
Firebase Remote Config'i kullanarak reklam geliri düzeylerine göre kullanıcı kitleleri oluşturun ve kullanıcı deneyimlerini uyarlayın .
Sen başlamadan önce
Henüz yapmadıysanız aşağıdaki görevleri tamamladığınızdan emin olun:
Projenizi ve uygulamanızı Analytics'e Başlarken bölümünde açıklandığı şekilde ayarlayın.
Firebase projenizi bir Google Analytics hesabına bağladığınızdan emin olun.
Uygulamanıza Android SDK v17.6.0+ veya Apple platformları SDK v6.34.0+ sürümünü eklediğinizden emin olun.
Uygulama
AdMob, AppLovin ve ironSource gibi para kazanma platformlarında reklamların görüntülenmesinden elde edilen reklam gelirini ölçmek için Google Analytics'i kullanabilirsiniz. Reklam gelirini ölçmek için kullanıcınız uygulamanızda bir reklam gördüğünde ad_impression
olaylarını 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 ölçümünü etkinleştirmek için AdMob uygulamanızı Firebase ve Analytics'e bağlayın . Google Analytics için Firebase SDK'sı, kullanıcılarınız bir reklam gösterimi gördüğünde ad_impression
etkinliğini otomatik olarak günlüğe kaydeder.
Diğer reklamdan para kazanma platformları
AppLovin ve ironSource gibi platformlar, daha sonra Google Analytics ad_impression
etkinliklerini günlüğe kaydetmek için kullanabileceğiniz gösterim düzeyinde gelir verileri sağlar.
Aşağıdaki bölümlerde birkaç farklı reklamdan para kazanma platformuna yönelik uygulama örnekleri gösterilmektedir.
AppLovin
Süratli
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, ]) } }
Amaç-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+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); }
Birlik
// 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
Süratli
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, ]) }
Amaç-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+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); } }
Birlik
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); } }
Uygulama hususları
Google Ads'ün ad_impression
öğenizi 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 aşırı değer verilmesini veya gereğinden az değer verilmesini önlemek için her iki parametrenin de mümkün olduğunca doğru olması gerekir.
Para birimi parametresi
currency
parametresi ( iOS+ | Android | Unity ), üç harfli ISO_4217 biçiminde (örneğin, "USD"
) bir dize olarak gönderilmelidir. Bazı reklamdan para kazanma platformları para birimini atlar ve bu da parametreyi sabit kodlamanızı gerektirebilir.
Değer parametresi
value
parametresi ( iOS+ | Android | Unity ), ondalık ayırıcı olarak nokta kullanılarak gönderilmelidir. Bazı platformlardan aldığınız değerleri yukarıdaki gerekli formata uyacak şekilde dönüştürmeniz gerekebilir. Bazı platformlar sayısal formatları yerelleştirir ve ondalık ayırıcı olarak virgül kullanır. Bazı durumlarda platform hiç değer göndermeyebilir.
Ayrıca değerin double veya long gibi sayısal bir tür olması gerekir. Örneğin, 1000.01
, 0.001
ve 1.00
tümü geçerlidir
Doğrulama
Google Analytics, geliştirme döngüsü boyunca uygulamanızı doğrulamak için birçok özellik sunar.
Hata Ayıklama Görünümü
Uygulamanızı ilk kez test ederken, testad_impression
verilerinizi konsolda görmek için DebugView'ı kullanın. Birad_impression
etkinliği seçtiğinizde, gönderdiğiniz parametreleri Parametreler panelinde (ekranın sağ tarafında) inceleyebilirsiniz. Bu, doğru bilgilerin işlendiğini doğrulamanıza yardımcı olur.Gerçek zamanlı
Uygulamanızı dağıttıktan sonra uygulamanın düzgün çalıştığını doğrulamak için Google Analytics Gerçek Zamanlı raporunu kullanın. Gerçek Zamanlı raporda, Etkinlik adı kartına göre Etkinlik sayısı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.Büyük Sorgu
Bir veya daha fazla günlükad_impression
etkinliğinin örneğini çıkarmak için BigQuery Export'u kullanın. Sıfır veya ayarlanmamış değerler gibi sorunları aramak ve işlenmeyen kullanım durumları için kodunuza düzeltmeler uygulamak için bu ayıklanan örneği kullanın.
Sonraki adımlar
Firebase konsolundaki Analytics kontrol panelinizi veya Analytics konsolundaki bağlı Analytics mülkünüzü ziyaret edin. Reklam geliri, Kullanıcı Başına Ortalama Gelir (ARPU) ve Yaşam Boyu Değer (LTV) gibi ölçümlere dahil edilir.