Интеграция рекламной сети Unity Ads в мобильное приложение
Unity Ads — рекламная сеть, которую чаще выбирают для игровых приложений. Причина: рекламодатели в Unity сети — преимущественно игровые студии, что даёт высокий eCPM для игровой аудитории. Для non-gaming приложений Unity Ads обычно проигрывает AdMob по fill rate.
SDK инициализация
Unity Ads SDK 4.x (актуальная на 2024):
// Android
UnityAds.initialize(context, "GAME_ID", isTestMode, object : IUnityAdsInitializationListener {
override fun onInitializationComplete() {
// SDK готов, загружаем рекламные юниты
loadInterstitial()
}
override fun onInitializationFailed(error: UnityAds.UnityAdsInitializationError, message: String) {
Log.e("UnityAds", "Init failed: $message")
}
})
isTestMode = true обязателен во время разработки. Реальные объявления в тестовом режиме не показываются — это защита от случайного показа production-рекламы в dev-сборках.
Rewarded видео — основной формат
Unity Ads специализируется на rewarded video. Паттерн загрузки и показа:
fun loadAd() {
UnityAds.load("rewardedVideo", object : IUnityAdsLoadListener {
override fun onUnityAdsAdLoaded(placementId: String) {
isAdReady = true
}
override fun onUnityAdsFailedToLoad(
placementId: String,
error: UnityAds.UnityAdsLoadError,
message: String
) {
// Retry через 30 секунд или fallback на другую сеть
}
})
}
fun showAd(activity: Activity) {
if (!isAdReady) return
UnityAds.show(activity, "rewardedVideo", object : IUnityAdsShowListener {
override fun onUnityAdsShowComplete(
placementId: String,
state: UnityAds.UnityAdsShowCompletionState
) {
if (state == UnityAds.UnityAdsShowCompletionState.COMPLETED) {
grantReward() // Начисляем только при COMPLETED, не при SKIPPED
}
}
})
}
SKIPPED — пользователь закрыл до конца; COMPLETED — досмотрел. Начислять награду только за COMPLETED — требование Unity и здравый смысл.
Placement IDs и конфигурация
Placement IDs создаются в Unity Dashboard (dashboard.unity3d.com). Типичные плейсменты: rewardedVideo, interstitial, banner. Для каждого плейсмента настраивается тип рекламы, eCPM floor, частота показа.
Место Unity Ads в медиации
Оптимальная архитектура для игровых приложений: AdMob mediation + Unity Ads adapter. AdMob запрашивает Unity Ads через mediation и выбирает наибольший eCPM. Нативная интеграция Unity Ads напрямую оправдана только если AdMob не подходит (например, приложение разработано в Unity Engine и уже использует Unity Gaming Services).
GDPR
Unity Ads поддерживает UnityAds.setPrivacyConsent() и метаданные через MetaData:
val gdprMetadata = MetaData(context)
gdprMetadata["gdpr.consent"] = true
gdprMetadata.commit()
Без явного consent в EU — Unity показывает non-targeted рекламу с пониженным eCPM.
Сроки — 1–3 дня: инициализация SDK, настройка плейсментов, GDPR consent flow, тестирование на реальных устройствах.







