Межстраничная реклама
Межстраничная реклама (interstitial) — полноэкранный формат рекламы, встраиваемый в контент приложения во время естественных пауз, таких как переход между уровнями игры или окончание выполнения целевого действия.
Когда приложение показывает межстраничное объявление, у пользователя есть выбор: либо нажать на объявление и перейти на сайт рекламодателя, либо закрыть рекламу и вернуться в приложение.
В межстраничной рекламе внимание пользователя полностью сконцентрировано на рекламе, за счет чего стоимость ее показа выше.
Внешний вид
Это руководство покажет, как интегрировать межстраничную рекламу в Android‐приложение с помощью Jetpack Compose расширения. В дополнение к примерам кода и инструкции оно содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.
Пререквизит
- Выполните шаги по интеграции sdk, описанные в Быстром старте.
- Заранее проинициализируйте рекламный SDK.
- Убедитесь, что используете самую актуальную версию Yandex Mobile Ads SDK, а в случае использовании медиации — наиболее свежую версию единой сборки.
Для использования Compose расширения добавьте зависимость в build.gradle.kts:
dependencies {
implementation("com.yandex.android:mobileads:8.0.0")
implementation("com.yandex.android:mobileads-compose:8.0.0")
// 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).
Расширить параметры запроса за рекламой можно через AdRequestConfiguration.Builder(), передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.
В следующем примере показано, как загрузить межстраничное объявление:
import com.yandex.mobile.ads.common.AdRequestConfiguration
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 adRequestConfiguration = AdRequestConfiguration.Builder("your-ad-unit-id").build()
when (val result = loader.loadAd(adRequestConfiguration)) {
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 adRequestConfiguration = AdRequestConfiguration.Builder("your-ad-unit-id").build()
when (val result = loader.loadAd(adRequestConfiguration)) {
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.
Важно
Убедитесь, что перед выкладыванием приложения в store, вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции межстраничной рекламы можно через встроенный в 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.