Межстраничная реклама (SwiftUI)
Межстраничная реклама (interstitial) — полноэкранный формат рекламы, встраиваемый в контент приложения во время естественных пауз, таких как переход между уровнями игры или окончание выполнения целевого действия.
Когда приложение показывает межстраничное объявление, у пользователя есть выбор: либо нажать на объявление и перейти на сайт рекламодателя, либо закрыть рекламу и вернуться в приложение.
В межстраничной рекламе внимание пользователя полностью сконцентрировано на рекламе, за счет чего стоимость ее показа выше.
Внешний вид
Это руководство покажет, как интегрировать межстраничную рекламу в iOS-приложение на SwiftUI. В дополнение к примерам кода и инструкции оно содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.
Пререквизит
- Выполните шаги по интеграции sdk, описанные в Быстром старте.
- Заранее проинициализируйте рекламный SDK.
- Убедитесь, что используете самую актуальную версию Yandex Mobile Ads SDK, а в случае использовании медиации — наиболее свежую версию единой сборки.
Имплементация
Основные шаги по интеграции межстраничных объявлений в SwiftUI:
- Повесить на корневой (или нужный)
Viewмодификатор.interstitialAd(isPresented:request:onEvent:). - Управлять загрузкой через
Binding<AdRequest?>: ненулевое значение запускает загрузку. - Управлять показом через
Binding<Bool>: значениеtrueпоказывает уже загруженное объявление (если загрузка ещё идёт, показ будет отложен до готовности). - Передать дополнительные настройки, если вы работаете через систему Adfox (через параметры
AdRequest). - Обрабатывать жизненный цикл в замыкании
onEvent(InterstitialAdEvent).
Особенности подключения межстраничной рекламы
-
Попытка загрузить новое объявление при получении ошибки в событии
.didFailToLoadнастоятельно не рекомендуется. Если вам необходимо повторить загрузку из обработчика ошибки, ограничьте повторные попытки загрузки рекламы, чтобы избежать постоянных неудачных запросов за рекламой в случае ограничений подключения к сети. -
Держите модификатор на view, который живёт на протяжении сценария показа (например, на экране или корне навигации), чтобы не потерять состояние загрузки.
Загрузка и показ рекламы
Для межстраничной рекламы в SwiftUI используйте AdRequest с идентификатором рекламного места и два состояния: опциональный запрос и флаг показа.
Для уведомления об успешной или неудачной загрузке, показе, закрытии и ошибках используйте замыкание onEvent с перечислением InterstitialAdEvent.
import SwiftUI
import YandexMobileAds
struct InterstitialView: View {
@State private var adRequest: AdRequest?
@State private var isPresented = false
var body: some View {
VStack {
Button("Загрузить и показать") {
adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
}
}
.interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
switch event {
case .didLoad:
isPresented = true
case .didDismiss, .didFailToShow, .didFailToLoad:
adRequest = nil
default:
break
}
}
}
}
Идентификатор рекламного места (adUnitId) получается в интерфейсе Рекламной сети Яндекса.
Расширить параметры запроса за рекламой можно через AdRequest, передав в инициализаторе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.
Пример: отдельно инициировать загрузку, затем показать объявление после готовности:
struct InterstitialView: View {
@State private var adRequest: AdRequest?
@State private var isPresented = false
func loadAd() {
adRequest = AdRequest(adUnitID: "R-M-XXXXX-YY")
}
func showAd() {
isPresented = true
}
var body: some View {
VStack {
Button("Загрузить", action: loadAd)
Button("Показать", action: showAd)
}
.interstitialAd(isPresented: $isPresented, request: $adRequest) { event in
if case .didLoad = event {
// Можно вызвать showAd() или установить isPresented = true
}
}
}
}
Если установить isPresented = true до завершения загрузки, показ будет выполнен автоматически после успешной загрузки.
Показ объявления
Межстраничная реклама должна отображаться во время естественных пауз в работе приложения. Хороший пример — между уровнями игры или после выполнения целевого действия, например, после окончания загрузки файла.
После успешной загрузки приходит событие .didLoad — установите isPresented = true, чтобы показать объявление (или заранее установите флаг показа, см. выше).
Флаг isPresented сбрасывается в false после закрытия объявления, ошибки показа или ошибки загрузки.
Тестирование интеграции межстраничной рекламы
Использование демоблоков для тестирования рекламы
Для проверки корректной интеграции рекламы, а также для тестирования вашего приложения, рекомендуется использовать тестовую рекламу.
Для гарантированного возврата тестовых объявлений на каждый запрос за рекламой, мы создали специальный демонстрационный идентификатор рекламного места. Используйте его для проверки корректной интеграции рекламы.
Демонстрационный adUnitId: demo-interstitial-yandex.
Важно
Убедитесь, что перед выкладыванием приложения в store, вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в интерфейсе Рекламной сети Яндекса.
Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.
Проверка корректной интеграции рекламы
Проверить корректность интеграции рекламы можно через нативный инструмент Console.
Чтобы получить возможность просматривать расширенные логи, необходимо вызвать метод enableLogging класса YMAMobileAds.
YMAMobileAds.enableLogging()
Для просмотра логов SDK в инструменте Console установите Subsystem = com.mobile.ads.ads.sdk. Так же вы можете фильтровать логи по категории и по уровню ошибки.
В случае обнаружения проблем при интеграции рекламы вы увидите подробный отчет о проблемах и рекомендации по их устранению.
Дополнительные ресурсы
-
Ссылка на github.