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