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

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

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

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

Внешний вид

Это руководство покажет, как интегрировать межстраничную рекламу в приложение на Compose Multiplatform. В дополнение к примерам кода и инструкции, оно также содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.

Пререквизит

  1. Выполните шаги по интеграции Yandex Mobile Ads Compose Multiplatform Plugin, описанные в Быстром старте.
  2. Убедитесь, что используете самую актуальную версию Yandex Mobile Ads Compose Multiplatform Plugin, а в случае использовании медиации — наиболее свежую версию единой сборки.

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

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

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

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

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

Загрузка рекламы

Создайте загрузчик через rememberInterstitialAdLoader(), затем вызовите loadAd с AdRequest, в котором указан adUnitId из интерфейса Рекламной сети Яндекса.

Запрос расширяйте через AdRequest (targeting, parameters, preferredTheme и т. д.). Дополнительный контекст в запросе заметно улучшает качество рекламы. Подробнее — в разделе Таргетирование рекламы.

Пример загрузки межстраничного объявления:

@Composable
fun InterstitialBlock(adUnitId: String) {
    val loader = rememberInterstitialAdLoader()
    val scope = rememberCoroutineScope()
    var interstitialAd by remember { mutableStateOf<InterstitialAd?>(null) }
    var isLoading by remember { mutableStateOf(false) }

    Button(
        onClick = {
            isLoading = true
            scope.launch {
                try {
                    interstitialAd = loader.loadAd(AdRequest(adUnitId = adUnitId))
                } catch (e: Exception) {
                    // Ad failed to load with AdRequestError.
                    // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
                }
                isLoading = false
            }
        },
        enabled = !isLoading,
    ) {
        Text(if (isLoading) "Загрузка..." else "Загрузить межстраничную")
    }

    Button(
        onClick = {
            interstitialAd?.show()
            interstitialAd = null
        },
        enabled = interstitialAd != null,
    ) {
        Text("Показать межстраничную")
    }
}

Для отладки в качестве adUnitId можно использовать 'demo-interstitial-yandex'.

Показ объявления

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

Чтобы отслеживать жизненный цикл, перед show() установите на экземпляр InterstitialAd слушатель InterstitialAdEventListener.

val ad = interstitialAd ?: return
ad.setAdEventListener(
    object : InterstitialAdEventListener {
        override fun onAdShown() {
            // Called when an ad is shown.
        }

        override fun onAdFailedToShow(adError: AdError) {
            // Called when an ad failed to show. Clear the reference and preload the next ad if needed.
        }

        override fun onAdDismissed() {
            // Called when ad is dismissed. Preload the next interstitial here if appropriate.
        }

        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.
        }
    },
)
ad.show()

Освобождение ресурсов

После onAdDismissed или onAdFailedToShow сбрасывайте ссылки на объект объявления и при необходимости начинайте загрузку следующего креатива. Не держите сильные ссылки на уже показанные объявления.

Тестирование интеграции межстраничной рекламы

Использование демоблоков для тестирования рекламы

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

Демонстрационный 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

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

Использование демоблоков для тестирования рекламы

Для проверки корректной интеграции рекламы и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.

Демонстрационный adUnitId: demo-interstitial-yandex.

Важно

Убедитесь, что перед выкладыванием приложения в магазин вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.

Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.

Проверка корректной интеграции рекламы

Проверить корректность интеграции рекламы можно через нативный инструмент Console.

Чтобы получить возможность просматривать расширенные логи, необходимо вызвать метод enableLogging класса YandexAds.

YandexAds.enableLogging()

Для просмотра логов SDK в инструменте Console установите Subsystem = com.mobile.ads.ads.sdk. Вы можете фильтровать логи по категории и уровню ошибки.

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

Советы

Предзагрузка объявления

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

Вызывайте loadAd заранее и в нужный момент сразу показывайте загруженное объявление.

Чтобы начать загрузку следующего объявления сразу после показа текущего, свяжите этот процесс с событием onAdDismissed.

Избыточное кеширование объявлений на экранах, которые вряд ли будут показаны, может снизить эффективность рекламы. Например, если в среднем пользователи проходят 2–3 уровня игры за раз, не стоит кешировать объявления для 6–7 экранов. Так видимость рекламы снизится, и рекламная система может деприоритизировать приложение.

Чтобы кеширование работало на пользу приложения, обращайте внимание на метрику «Доля показов» или «Доля видимых показов» в интерфейсе Рекламной сети Яндекса. Если она ниже 20%, это повод задуматься над изменением алгоритма кеширования. Чем доля показов выше, тем лучше.

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