Реклама при открытии приложения (App Open Ad)
Реклама при открытии приложения — специальный формат рекламы для монетизации экранов загрузки приложений. Такие объявления могут быть закрыты в любое время и предназначены для показа:
- при запуске приложения;
- при выведении приложения на передний план (foreground);
- при возврате в приложение из фонового режима (background).
Это руководство покажет, как с помощью расширения Jetpack Compose интегрировать рекламу при открытии в Android‐приложение. В дополнение к примерам кода и инструкции оно содержит рекомендации и ссылки на дополнительные ресурсы.
Внимание
Реклама при открытии возможна только для приложений с вертикальной ориентацией. Для приложений с горизонтальной ориентацией объявления подбираться не будут.
Внешний вид
В верхней части объявления расположена кнопка Перейти в приложение. Она показывает пользователям, что они находятся в вашем приложении, и позволяет закрыть рекламу. Вот пример того, как выглядит объявление:
Пререквизит
- Выполните шаги по интеграции SDK, описанные в Быстром старте.
- Заранее проинициализируйте рекламный SDK.
- Убедитесь, что используете последнюю версию Yandex Mobile Ads SDK, а в случае использования медиации — наиболее свежую версию единой сборки.
Термины
- Холодный старт — старт приложения при отсутствии его в оперативной памяти. Создание новой сессии приложения.
- Горячий старт — вывод приложения из фонового режима (background). Когда приложение приостановлено в оперативной памяти и переходит в активный режим (foreground).
Для использования 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"))
}
Имплементация
- Инициализируйте SDK на старте работы приложения.
- Создайте загрузчик рекламы с помощью
rememberAppOpenAdLoader(). - Загрузите рекламное объявление, используя suspend-функцию
loadAd(). - Покажите рекламу, используя метод
show(Activity).
Основные шаги
-
Инициализируйте SDK на старте работы приложения.
YandexAds.initialize(this) { // Now you can use ads } -
Создайте загрузчик рекламы с помощью
rememberAppOpenAdLoader().Потребуется идентификатор рекламного места, полученный в интерфейсе Рекламной сети Яндекса (
AD_UNIT_ID).Расширить параметры запроса за рекламой можно через
AdRequest.Builder(), передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.import com.yandex.mobile.ads.compose.rememberAppOpenAdLoader @Composable fun SplashScreen(activity: Activity) { val loader = rememberAppOpenAdLoader() val AD_UNIT_ID = "R-M-XXXXXX-Y" // для отладки можно использовать "demo-appopenad-yandex" } -
Загрузите рекламное объявление через
LaunchedEffect, используя suspend-функциюloadAd().LaunchedEffect(Unit) { val adRequest = AdRequest.Builder(AD_UNIT_ID).build() when (val result = loader.loadAd(adRequest)) { is AppOpenAdLoadResult.Success -> appOpenAd = result.ad is AppOpenAdLoadResult.Failure -> { // Ad failed to load with AdRequestError. // Attempting to load a new ad from here is strongly discouraged. } } } -
Покажите рекламу, используя метод
show.LaunchedEffect(appOpenAd) { appOpenAd?.show(activity) }Примечание
Если реклама уже показана, после вызова метода
show(Activity)вAppOpenAdEventListener.onAdFailedToShow(AdError)вернется ошибка показа.
Полный пример
import com.yandex.mobile.ads.appopenad.AppOpenAdLoadResult
import com.yandex.mobile.ads.common.AdRequest
import com.yandex.mobile.ads.compose.rememberAppOpenAdLoader
@Composable
fun SplashScreen(activity: Activity) {
var appOpenAd by remember { mutableStateOf<AppOpenAd?>(null) }
val loader = rememberAppOpenAdLoader()
// Загружаем сразу при входе в composable
LaunchedEffect(Unit) {
val adRequest = AdRequest.Builder("R-M-XXXXXX-Y").build()
when (val result = loader.loadAd(adRequest)) {
is AppOpenAdLoadResult.Success -> appOpenAd = result.ad
is AppOpenAdLoadResult.Failure -> Log.e("YandexAds", result.error.description)
}
}
LaunchedEffect(appOpenAd) {
appOpenAd?.show(activity)
}
}
Особенности подключения рекламы при открытии приложения
- Все вызовы методов Yandex Mobile Ads SDK выполняйте из главного потока.
- Загрузка может занимать продолжительное время, поэтому не увеличивайте время холодного старта, если реклама не загрузилась.
- Заранее предзагружайте объявление для последующего показа при горячем старте.
- Не загружайте одновременно рекламу App Open Ad и другие форматы рекламы при старте приложения, так как приложение в этот момент может скачивать необходимые для работы данные. Это может перегрузить устройство и интернет-соединение и увеличить время загрузки рекламы.
- Если вы получили ошибку в результате
AppOpenAdLoadResult.Failure, не пытайтесь загрузить новое объявление снова. Если это необходимо сделать, ограничьте число повторных попыток загрузки рекламы, чтобы избежать неудачных запросов и проблем с подключением.
Тестирование интеграции рекламы при открытии
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции рекламы и тестирования приложения используйте тестовую рекламу. Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой вы можете использовать специальный демонстрационный идентификатор рекламного места.
Демонстрационный adUnitId: demo-appopenad-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 App Open Ad was integrated successfully
В случае обнаружения проблем при интеграции рекламы вы получите подробный отчет о проблемах и рекомендации по их устранению.
Рекомендации
-
При открытии приложения не показывайте объявление до экрана загрузки (Splash screen). Экран загрузки делает использование приложения удобнее. Пользователь будет уверен, что открыл нужное приложение.
На этом же экране вы можете предупредить о грядущей рекламе. Используйте индикатор загрузки или текстовое сообщение, которое проинформирует пользователя о том, что просмотр содержимого приложения продолжится после рекламы.
-
Учитывайте задержку между запросом и показом рекламы.
Если есть задержка между запросом рекламы и ее показом, пользователь может увидеть рекламу, которая не имеет отношения к контенту. Один из вариантов решения — использовать экран загрузки до отображения основного содержимого приложения и начать показ рекламы именно с этого экрана. Если после экрана загрузки приложение открывает какой-то контент, то рекламу лучше не показывать.
-
Не показывайте объявление сразу после установки приложения. Подождите, пока новые пользователи откроют приложение и воспользуются им несколько раз.
Показывайте объявление только тем пользователям, которые достигли определенных критериев в приложении. Например, прошли определенный уровень, открывали приложение определенное количество раз, не участвуют в предложениях с вознаграждением.
-
Не показывайте рекламу на каждый холодный/горячий старт приложения. Регулируйте частоту показов, основываясь на поведении пользователя приложения.
-
Показывайте рекламу только в том случае, если приложение находится в фоновом режиме в течение определенного промежутка времени (например, 30 секунд, 2 минуты, 15 минут).
-
Проведите тестирование. Каждое приложение требует индивидуального подхода для максимизации дохода. Поведение пользователей и их вовлеченность могут меняться, поэтому рекомендуется периодически тестировать стратегии показа рекламы в приложении.
Дополнительные ресурсы
-
Ссылка на github.