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:
Uygulamanızın oluşturduğu reklam gelirine katkıda bulunan kullanıcı işlemlerini analiz edin.
Neyi bulmak için Firebase A/B Testing kullanarak denemeler yapın Özellikler, uygulamanızın reklam gelirinde artış sağlar veya reklamları kişiselleştirin .Remote Config
İçerik üretme kullanıcı kitleleri ve kullanıcı deneyimlerini özelleştirmek için Firebase Remote Config, reklam geliri düzeylerine göre değişir.
Başlamadan önce
Henüz yapmadıysanız aşağıdaki görevleri tamamladığınızdan emin olun:
Projenizi ve uygulamanızı şurada açıklandığı gibi ayarlayın: Analytics Kullanmaya Başlama.
Android SDK 17.6.0+ veya Apple platformları SDK v6.34.0+.
Uygulama
Reklamlardan elde edilen gelirleri ölçmek için Google Analytics kullanabilirsiniz.
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'e ve Analytics'ye bağlayın
Böylece reklam gelirinin otomatik olarak ölçülmesini sağlar. Firebase SDK'sı:
Google Analytics, her seferinde ad_impression
etkinliğini günlüğe
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
daha sonra Google Analytics günlüğünü kaydetmek için kullanabilirsiniz
ad_impression
etkinlikler.
Aşağıdaki bölümlerde birkaç farklı reklam için uygulama örnekleri gösterilmektedir para kazanma platformları.
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+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
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+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 uygulamasının
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 tamamı
geçerli
Doğrulama
Google Analytics, uygulamanızı doğrulamak için birden fazla özellik sunar ilk adımıdır.
DebugView
Uygulamanızı ilk test ederken, Testad_impression
verilerinizi görmek için DebugView'ı tıklayın kontrol edin. Birad_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.Gerçek zamanlı
Uygulamanızı dağıttıktan sonra Google Analytics öğesini kullanın Gerçek zamanlı 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.BigQuery
Bir dışa aktarma işlemi için BigQuery dışa aktarmayı kullanın bir veya daha fazla günlükad_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 kontrol panelinde Analytics kontrol panelinizi ziyaret edin Analytics mülkü için Analytics mülkü oluşturabilirsiniz. Reklam geliri hesaba katılır Kullanıcı Başına Ortalama Gelir (KBOG) ve Yaşam Boyu gibi Değer (YBD).