Интеграция рекламной сети AdMob в мобильное приложение
AdMob — не просто «добавить баннер». Неправильная интеграция приводит к двум последствиям: низкий eCPM из-за неверной конфигурации targeting, и отклонение в Google Play/App Store из-за нарушения политик размещения рекламы. Оба — следствие невнимательного чтения документации.
Инициализация и GDPR
С 2023 года AdMob требует интеграцию User Messaging Platform (UMP) для соответствия GDPR/CCPA. Без запроса согласия реклама в EU показывается без персонализации (non-personalized) — eCPM падает в 3–5 раз.
// Android
val params = ConsentRequestParameters.Builder()
.setTagForUnderAgeOfConsent(false)
.build()
ConsentInformation.getInstance(context).requestConsentInfoUpdate(
activity, params,
{
if (ConsentInformation.getInstance(context).isConsentFormAvailable) {
UserMessagingPlatform.loadAndShowConsentFormIfRequired(activity) { error ->
// После показа формы — инициализируем AdMob
MobileAds.initialize(context)
}
} else {
MobileAds.initialize(context)
}
},
{ error -> /* обработка ошибки */ }
)
MobileAds.initialize должен вызываться строго после получения статуса согласия, но только один раз за жизнь приложения. Вызов до consent-flow → реклама показывается без корректного таргетинга.
Форматы и их размещение
Баннеры (AdaptiveBanner) — не используйте фиксированные размеры BANNER (320x50). AdaptiveBanner адаптируется под ширину экрана и даёт eCPM на 10–20% выше за счёт лучшего заполнения:
val adSize = AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
context, adContainerWidth
)
Политика Google: баннер не должен перекрывать контент и быть закреплён внизу или вверху экрана. Плавающие баннеры, баннеры поверх кнопок — причина бана.
Interstitial — показывать только в естественных паузах: между уровнями, после завершения задачи. Лимит: не чаще раза в 60 секунд. Загружать заранее через InterstitialAd.load(), показывать по готовности — interstitialAd.show(). Показ в момент тапа по кнопке — нарушение политики, App Review это ловит.
Rewarded — самый высокий eCPM. Пользователь осознанно смотрит рекламу за вознаграждение (жизнь в игре, монеты). Обязательно: вознаграждение начислять только в onUserEarnedReward, не в onAdDismissed.
rewardedAd.fullScreenContentCallback = object : FullScreenContentCallback() {
override fun onAdDismissedFullScreenContent() {
// НЕ начислять здесь — пользователь мог закрыть рекламу до конца
}
}
rewardedAd.show(activity) { rewardItem ->
// Начислять только здесь
addReward(rewardItem.amount)
}
Mediation для повышения fill rate
Чистый AdMob часто не даёт 100% fill rate в некоторых регионах. Google Ad Manager с mediation позволяет подключить несколько сетей (Meta Audience Network, Unity Ads, AppLovin) — AdMob выбирает сеть с наибольшим eCPM для каждого показа.
Настройка mediation — в AdMob Console, интеграция адаптеров для каждой сети через Gradle/CocoaPods.
Сроки — 1–3 дня в зависимости от форматов: базовая интеграция с UMP и одним форматом — 1 день; полный mediation stack с несколькими сетями — 3 дня.







