Измерение источников дохода поможет вам понять ценность ваших пользователей за весь период использования и развить бизнес вашего приложения. Это руководство покажет вам, как настроить измерение дохода от рекламы для вашей платформы.
После настройки измерения доходов от рекламы вы можете выполнить любое из следующих действий:
Анализируйте действия пользователей, которые способствуют получению дохода от рекламы в вашем приложении.
Проводите эксперименты с использованием Firebase A/B Testing чтобы определить, какие функции способствуют повышению дохода от рекламы в вашем приложении, или персонализируйте рекламу с помощью персонализации Remote Config .
Создавайте пользовательские аудитории и адаптируйте пользовательский опыт с помощью Firebase Remote Config на основе уровней доходов от рекламы.
Прежде чем начать
Если вы еще этого не сделали, обязательно выполните следующие задачи:
Настройте свой проект и приложение, как описано в разделе Начало работы с Analytics .
Убедитесь, что вы связали свой проект Firebase с аккаунтом Google Analytics .
Убедитесь, что вы включили в свое приложение Android SDK v17.6.0+ или Apple Platform SDK v6.34.0+.
Выполнение
Вы можете использовать Google Analytics для измерения дохода от рекламы, полученного от показа рекламы с помощью платформ монетизации, таких как AdMob , AppLovin и ironSource. Для измерения дохода от рекламы вы должны регистрировать события ad_impression
всякий раз, когда ваш пользователь видит рекламу в вашем приложении. Эти события содержат такие данные, как рекламная платформа, источник, валюта и стоимость.
AdMob
Если вы используете платформу AdMob , свяжите свое приложение AdMob с Firebase и Analytics , чтобы включить автоматическое измерение дохода от рекламы. Firebase SDK для Google Analytics автоматически регистрирует событие ad_impression
всякий раз, когда ваши пользователи видят показ рекламы.
Другие платформы для монетизации рекламы
Такие платформы, как AppLovin и ironSource, предоставляют данные о доходах на уровне показов, которые затем можно использовать для регистрации событий ad_impression
Google Analytics .
В следующих разделах показаны примеры реализации нескольких различных платформ монетизации рекламы.
AppLovin
Быстрый
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); }
Единство
// 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); }
Источник железа
Быстрый
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); } }
Единство
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); } }
Соображения по реализации
Чтобы разрешить Google Ads обрабатывать ваш ad_impression
, обязательно включите параметры currency
и value
(описанные ниже). Оба параметра должны быть максимально точными, чтобы предотвратить переоценку или недооценку пользователей.
Параметр валюты
Параметр currency
( iOS+ | Android | Unity ) должен быть отправлен как строка в трехбуквенном формате ISO_4217 (например, "USD"
). Некоторые платформы монетизации рекламы не включают валюту, что может потребовать от вас жесткого кодирования параметра.
Параметр значения
Параметр value
( iOS+ | Android | Unity ) следует отправлять с использованием точки в качестве десятичного разделителя. Возможно, вам придется преобразовать значения, полученные с некоторых платформ, чтобы они соответствовали требуемому формату выше. Некоторые платформы локализуют числовые форматы и используют запятые в качестве десятичных разделителей. В некоторых случаях платформа может вообще не отправлять значение.
Кроме того, значение должно быть числового типа, например double или long. Например, 1000.01
, 0.001
и 1.00
являются допустимыми.
Проверка
Google Analytics предлагает множество функций для проверки внедрения на протяжении всего цикла разработки.
ОтладкаПросмотра
При первом тестировании реализации используйте DebugView , чтобы увидеть тестовые данныеad_impression
в консоли. При выборе событияad_impression
вы можете просмотреть отправляемые параметры на панели «Параметры» (в правой части экрана). Это поможет вам убедиться, что обрабатывается правильная информация.В реальном времени
После развертывания приложения используйте отчет Google Analytics Realtime , чтобы подтвердить, что реализация работает правильно. В отчете Realtime просмотрите карточку Event count by Event name и выберите ad_impression , чтобы увидеть подробности о событии и параметрах за последние 30 минут.BigQuery
Используйте экспорт BigQuery для извлечения выборки событийad_impression
за один или несколько дней. Используйте эту извлеченную выборку для поиска проблем, таких как нулевые или неустановленные значения, и вносите исправления в свой код для любых необработанных вариантов использования.
Следующие шаги
Посетите панель управления Analytics в консоли Firebase или в связанном свойстве Analytics в консоли Analytics . Доход от рекламы учитывается в показателях, таких как средний доход на пользователя (ARPU) и пожизненная ценность (LTV).