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:
Uygulamanızdan elde ettiğiniz reklam gelirine katkıda bulunan kullanıcı işlemlerini analiz edin.
Uygulamanızdan elde edilen reklam gelirini artıracak özellikleri bulmak için Firebase A/B Testing'ni kullanarak denemeler yapın veya Remote Config kişiselleştirmesi ile reklam deneyimlerini kişiselleştirin.
Firebase Remote Config kullanarak reklam geliri düzeylerine göre kullanıcı kitleleri oluşturun ve kullanıcı deneyimlerini özelleştirin.
Başlamadan önce
Henüz yapmadıysanız aşağıdaki görevleri tamamladığınızdan emin olun:
Projenizi ve uygulamanızı Analytics'i kullanmaya başlama 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 17.6.0 veya sonraki bir sürümünü ya da Apple platformları SDK 6.34.0 veya sonraki bir sürümünü eklediğinizden emin olun.
Uygulama
AdMob, AppLovin ve ironSource gibi para kazanma platformlarında görüntülü reklamlar göstererek elde edilen reklam gelirini ölçmek için Google Analytics kullanabilirsiniz. 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 etkinleştirmek için AdMob uygulamanızı Firebase'e ve Analytics 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, Google Analytics
ad_impression
etkinliklerini kaydetmek için kullanabileceğiniz gösterim düzeyinde gelir verileri sağlar.
Aşağıdaki bölümlerde, birkaç farklı reklamdan para kazanma platformu için uygulama örnekleri gösterilmektedir.
AppLovin
Swift
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
- (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
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
- (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 uygulamasının ad_impression işlemesini sağlamak için hem currency hem de value parametrelerini (aşağıda açıklanmıştır) eklediğinizden emin olun. Kullanıcıların değerinin fazla veya az hesaplanmasını ö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 ISO_4217 biçiminde bir dize olarak gönderilmelidir (örneğin, "USD"). Bazı reklamdan para kazanma platformları para birimini atlar. Bu durumda parametreyi kod gömmeniz 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 platformlar 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 geçerlidir.
Doğrulama
Google Analytics, geliştirme döngüsü boyunca uygulamanızı doğrulamak için birden fazla özellik sunar.
DebugView
Uygulamanızı ilk kez test ederken test verilerinizi konsolda görmek için DebugView'ı kullanın.ad_impressionBirad_impressionetkinliği seçtiğinizde, gönderdiğiniz parametreleri Parametreler panelinde (ekranın sağ tarafında) inceleyebilirsiniz. Bu sayede doğru bilgilerin işlendiğini onaylayabilirsiniz.Anlık
Uygulamanızı dağıttıktan sonra, uygulamanın doğru çalıştığını doğrulamak için Google Analytics Anlık raporu kullanın. Anlık raporda, son 30 dakikaya ait etkinlik ve parametre ayrıntılarını görmek için Etkinlik adına göre etkinlik sayısı kartını görüntüleyin ve ad_impression'ı seçin.BigQuery
Bir veya daha fazla günlükad_impressionetkinliklerinin 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 ayıklanmış örneği kullanın ve ele alınmayan kullanım alanları için kodunuzda düzeltmeler uygulayı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 metriklere dahil edilir.