#
ModalWindow
In App Message — это всплывающие окна внутри приложения. Подробнее о формате — в разделе Рекламные форматы.
#
1. Загрузка рекламы
При загрузке рекламы необходимо передавать padId, который можно получить в рекламной админке либо от менеджера. Для отладки можно использовать тестовые padId (см. Отладка).
import ru.tander.mads.inapp.loading.InAppAdRequest
val inAppAdRequest = InAppAdRequest(
padId = "1", // идентификатор места показа рекламы
debugCreative = false, // true — если нужно загрузить отладочный рекламный креатив
targetings = emptyMap(), // параметры таргетингов
)
Для загрузки вызовите suspend-функцию Mads.inApp.load(...):
import ru.tander.mads.Mads
val inAppAdResponse = Mads.inApp.load(inAppAdRequest)
Простановка таймаутов загрузки рекламы:
withTimeout(10_000L) {
Mads.inApp.load(...)
}
Отмена загрузки рекламы:
val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
val job = scope.launch {
try {
Mads.inApp.load(...) // загрузка рекламы
} catch (e: CancellationException) {
println("Load cancelled")
// Cleanup if needed
}
}
// Cancel anytime:
job.cancel() // Отменяет загрузку рекламы
#
Параметры запроса
Tip
Параллельно можно загружать несколько рекламных объявлений. Для отмены загрузки достаточно остановить работу CoroutineScope, в контексте которого была вызвана suspend-функция Mads.inApp.load(...).
#
2. Таргетирование
Передайте словарь таргетингов при загрузке рекламы. Подробнее о таргетингах — в разделе Таргетирование.
val targetings: Map<String, String> = mapOf(
"gender" to "female"
)
val inAppAdRequest = InAppAdRequest(
padId = 1,
targetings = targetings,
)
val inAppAdResponse = Mads.inApp.load(inAppAdRequest)
#
3. Обработка результата запроса и показ загруженной рекламы
Обработайте результат загрузки рекламы:
import ru.tander.mads.inapp.loading.InAppAdResponse
when (inAppAdResponse) {
is InAppAdResponse.Success -> {
// Для показа загруженной рекламы передайте текущую `Activity`
inAppAdResponse.content.show(activity = ...)
}
is InAppAdResponse.NoContent -> {
// Запрос за рекламой завершился без ошибок, но реклама не была подобрана.
}
is InAppAdResponse.Failure -> {
// Запрос за рекламой завершился с ошибой.
}
}
#
Возможные состояния
#
4. Кастомизация UI (Modal Window)
Tip
Кастомизация удалена из настроек и вынесена в ответ сервера. Кастомизировать рекламу можно будет в админ панели.
#
5. Реакция на действия пользователя
SDK не реагирует на действия пользвателя на рекламном объявлении (такие как "нажатие на кнопку" и т.д.). Реакцию на эти действия необходимо реализовать на стороне интегрирующего приложения:
import ru.tander.mads.inapp.showing.InAppAdShowingAction
when (inAppAdResponse) {
is InAppAdResponse.Success -> {
inAppAdResponse.content.actions
.onEach(::handleInAppAdShowingAction)
.launchIn(...)
inAppAdResponse.content.show(activity = ...)
}
...
}
fun handleInAppAdShowingAction(action: InAppAdShowingAction) {
when (action) {
is InAppAdShowingAction.OnUrlClicked -> {
openUrl(action.type, action.url) // открытие ссылки при нажатии на кнопку на рекламном объявлении
}
is InAppAdShowingAction.OnPromocodeCopy -> {
applyPromoCode(action.promocode) // применение промокода при нажатии на кнопку на рекламном объявлении
}
}
}
#
Возможные значения InAppAdShowingAction
#
6. Реакция на события показа рекламы
При необходимости приложение может отслеживать события показа рекламы, используя InAppAdContent.events:
import ru.tander.mads.inapp.showing.InAppAdShowingEvent
when (inAppAdResponse) {
is InAppAdResponse.Success -> {
inAppAdResponse.content.events
.onEach(::handleInAppAdShowingEvents)
.launchIn(...)
inAppAdResponse.content.show(activity = ...)
}
...
}
fun handleInAppAdShowingEvent(event: InAppAdShowingEvent) {
when (action) {
is InAppAdShowingEvent.OnCreativeView -> {
// объявление показано
}
is InAppAdShowingEvent.OnCreativeDismissed -> {
// объявление скрыто
}
}
}
#
Возможные значения InAppAdShowingEvent
#
Пример
Полный пример интеграции In App рекламы — в репозитории на GitHub.