Измерение источников дохода поможет вам оценить пожизненную ценность ваших пользователей и развить бизнес вашего приложения. Это руководство покажет, как настроить отслеживание дохода от рекламы на вашей платформе.
После настройки измерения доходов от рекламы вы можете выполнить любое из следующих действий:
Анализируйте действия пользователей, которые способствуют получению дохода от рекламы в вашем приложении.
Проводите эксперименты с использованием Firebase A/B Testing чтобы определить, какие функции способствуют повышению доходов от рекламы в вашем приложении, или персонализируйте рекламные объявления с помощью персонализации Remote Config .
Создавайте пользовательские аудитории и адаптируйте пользовательский опыт с помощью Firebase Remote Config на основе уровней доходов от рекламы.
Прежде чем начать
Если вы еще этого не сделали, обязательно выполните следующие задачи:
Настройте свой проект и приложение, как описано в разделе Начало работы с Analytics .
Убедитесь, что вы связали свой проект Firebase с учетной записью Google Analytics .
Убедитесь, что вы включили в свое приложение Android SDK v17.6.0+ или Apple Platforms 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
При первом тестировании реализации используйте DebugView для просмотра тестовых данныхad_impression
в консоли. При выборе событияad_impression
вы можете просмотреть отправляемые параметры на панели «Параметры» (в правой части экрана). Это поможет вам убедиться, что обрабатывается корректная информация.В реальном времени
После развертывания приложения используйте отчёт Google Analytics Realtime , чтобы убедиться в корректной работе. В отчёте Realtime откройте карточку «Количество событий по названию события» и выберите ad_impression , чтобы просмотреть сведения о событии и параметрах за последние 30 минут.BigQuery
Используйте экспорт BigQuery для извлечения выборки событийad_impression
за один или несколько дней. Используйте эту извлеченную выборку для поиска проблем, таких как нулевые или неустановленные значения, и внесения исправлений в код для любых необработанных случаев использования.
Следующие шаги
Откройте панель управления Analytics в консоли Firebase или в связанном ресурсе Analytics в консоли Analytics . Доход от рекламы учитывается в таких показателях, как средний доход на пользователя (ARPU) и общая ценность (LTV).