Межстраничная реклама
Межстраничная реклама (interstitial) — полноэкранный формат рекламы, встраиваемый в контент приложения во время естественных пауз, таких как переход между уровнями игры или окончание выполнения целевого действия.
Когда приложение показывает межстраничное объявление, у пользователя есть выбор: либо нажать на объявление и перейти на сайт рекламодателя, либо закрыть рекламу и вернуться в приложение.
В межстраничной рекламе внимание пользователя полностью сконцентрировано на рекламе, за счет чего стоимость ее показа выше.
Внешний вид
Это руководство покажет, как интегрировать межстраничную рекламу в Android‐приложение с помощью расширения Jetpack Compose. В дополнение к примерам кода и инструкции оно содержит рекомендации и ссылки на дополнительные ресурсы.
Пререквизит
- Выполните шаги по интеграции SDK, описанные в Быстром старте.
- Заранее проинициализируйте рекламный SDK.
- Убедитесь, что используете последнюю версию Yandex Mobile Ads SDK, а в случае использования медиации — наиболее свежую версию единой сборки.
Для использования Compose-расширения добавьте зависимость в build.gradle.kts:
dependencies {
implementation("com.yandex.android:mobileads:8.0.0-beta.1")
implementation("com.yandex.android:mobileads-compose:8.0.0-beta.1")
// Compose BOM (минимум 2024.01.00)
implementation(platform("androidx.compose:compose-bom:2025.03.00"))
}
Имплементация
Основные шаги по интеграции межстраничных объявлений:
- Использовать
rememberInterstitialAdLoader()для создания загрузчика рекламы. - Загрузить рекламу через suspend-функцию
loadAd()с обработкой результатаInterstitialAdLoadResult. - Зарегистрировать слушатель методов обратного вызова событий рекламного объявления
InterstitialAdEventListener. - Показать объявление
InterstitialAd.
Особенности подключения межстраничной рекламы
-
Все вызовы методов Yandex Mobile Ads SDK выполняйте из главного потока.
-
Если вы получили ошибку в результате
InterstitialAdLoadResult.Failure, не пытайтесь загрузить новое объявление снова. Если это необходимо сделать, ограничьте число повторных попыток загрузки рекламы, чтобы избежать неудачных запросов и проблем с подключением. -
Удерживайте сильную ссылку на рекламу на протяжении всей жизни экрана, в рамках которого происходит взаимодействие с рекламой, чтобы избежать очистки сборщиком мусора.
-
Когда composable покидает дерево,
cancelLoading()вызывается автоматически. Явно освобождать ресурсы загрузчика не нужно.
Загрузка рекламы
Для загрузки межстраничной рекламы используйте rememberInterstitialAdLoader(). Загрузка выполняется через suspend-функцию loadAd(), которая возвращает InterstitialAdLoadResult.
Для загрузки рекламного объявления потребуется идентификатор рекламного места, полученный в интерфейсе Рекламной сети Яндекса (adUnitId).
Расширить параметры запроса за рекламой можно через AdRequest.Builder(), передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.
Пример загрузки межстраничного объявления
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.rememberInterstitialAdLoader
import com.yandex.mobile.ads.interstitial.InterstitialAdLoadResult
@Composable
fun MyScreen(activity: Activity) {
var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
val loader = rememberInterstitialAdLoader()
LaunchedEffect(Unit) {
val adRequest = AdRequest.Builder("your-ad-unit-id").build()
when (val result = loader.loadAd(adRequest)) {
is InterstitialAdLoadResult.Success -> interstitialAd = result.ad
is InterstitialAdLoadResult.Failure -> {
// Ad failed to load with AdRequestError.
// Attempting to load a new ad from here is strongly discouraged.
}
}
}
}
Если вы размещаете рекламу через систему Adfox, после загрузки баннера данные campaignId, bannerId и placeId доступны из объектов interstitialAdLoader через свойство adAttributes типа AdAttributes.
Показ объявления
Межстраничная реклама должна отображаться во время естественных пауз в работе приложения. Между уровнями игры или после выполнения целевого действия. Например, после окончания загрузки файла.
Перед показом объявления установите слушатель методов обратного вызова рекламного объявления InterstitialAdEventListener.
@Composable
fun MyScreen(activity: Activity) {
var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
val loader = rememberInterstitialAdLoader()
LaunchedEffect(Unit) {
val adRequest = AdRequest.Builder("your-ad-unit-id").build()
when (val result = loader.loadAd(adRequest)) {
is InterstitialAdLoadResult.Success -> interstitialAd = result.ad
is InterstitialAdLoadResult.Failure -> {
// Ad failed to load with AdRequestError.
}
}
}
LaunchedEffect(interstitialAd) {
interstitialAd?.apply {
setAdEventListener(object : InterstitialAdEventListener {
override fun onAdShown() {
// Called when ad is shown.
}
override fun onAdFailedToShow(adError: AdError) {
// Called when an InterstitialAd failed to show.
loadInterstitialAd()
}
override fun onAdDismissed() {
// Called when ad is dismissed.
// Now you can preload the next interstitial ad.
loadInterstitialAd()
}
override fun onAdClicked() {
// Called when a click is recorded for an ad.
}
override fun onAdImpression(impressionData: ImpressionData?) {
// Called when an impression is recorded for an ad.
}
})
show(activity)
}
}
}
Тестирование интеграции межстраничной рекламы
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции межстраничной рекламы и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.
Демонстрационный adUnitId: demo-interstitial-yandex.
Важно
Убедитесь, что перед выкладыванием приложения в магазин вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции межстраничной рекламы можно через встроенный в SDK анализатор. Подробный отчет о проверке выведется в лог.
Для просмотра отчета, выполните поиск по ключевому слову YandexAds в инструменте отладки Android-приложений Logcat.
adb logcat -v brief '*:S YandexAds'
В случае успешной интеграции вы увидите следующее сообщение:
adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type interstitital was integrated successfully
В случае обнаружения проблем при интеграции межстраничной рекламы вы получите подробный отчет о проблемах и рекомендации по их устранению.
Дополнительные ресурсы
-
Ссылка на github.