Межстраничная реклама

Межстраничная реклама (interstitial) — полноэкранный формат рекламы, встраиваемый в контент приложения во время естественных пауз, таких как переход между уровнями игры или окончание выполнения целевого действия.

Когда приложение показывает межстраничное объявление, у пользователя есть выбор: либо нажать на объявление и перейти на сайт рекламодателя, либо закрыть рекламу и вернуться в приложение.

В межстраничной рекламе внимание пользователя полностью сконцентрировано на рекламе, за счет чего стоимость ее показа выше.

Внешний вид

Это руководство покажет, как интегрировать межстраничную рекламу в Android‐приложение с помощью расширения Jetpack Compose. В дополнение к примерам кода и инструкции оно содержит рекомендации и ссылки на дополнительные ресурсы.

Пререквизит

  1. Выполните шаги по интеграции SDK, описанные в Быстром старте.
  2. Заранее проинициализируйте рекламный SDK.
  3. Убедитесь, что используете последнюю версию 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"))
}

Имплементация

Основные шаги по интеграции межстраничных объявлений:

  1. Использовать rememberInterstitialAdLoader() для создания загрузчика рекламы.
  2. Загрузить рекламу через suspend-функцию loadAd() с обработкой результата InterstitialAdLoadResult.
  3. Зарегистрировать слушатель методов обратного вызова событий рекламного объявления InterstitialAdEventListener.
  4. Показать объявление InterstitialAd.

Особенности подключения межстраничной рекламы

  1. Все вызовы методов Yandex Mobile Ads SDK выполняйте из главного потока.

  2. Если вы получили ошибку в результате InterstitialAdLoadResult.Failure, не пытайтесь загрузить новое объявление снова. Если это необходимо сделать, ограничьте число повторных попыток загрузки рекламы, чтобы избежать неудачных запросов и проблем с подключением.

  3. Удерживайте сильную ссылку на рекламу на протяжении всей жизни экрана, в рамках которого происходит взаимодействие с рекламой, чтобы избежать очистки сборщиком мусора.

  4. Когда 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

В случае обнаружения проблем при интеграции межстраничной рекламы вы получите подробный отчет о проблемах и рекомендации по их устранению.

Дополнительные ресурсы