#
ModalWindow
In App Message — это всплывающие окна внутри приложения. Подробнее о формате — в разделе Рекламные форматы.
#
1. Загрузка рекламы
Загрузчик рекламы InAppAdLoader позволяет предзагружать рекламу прежде, чем взаимодействие пользователя с приложением будет прервано показом рекламы.
import MadsSDK
private let loader = InAppAdLoader()
private var loadedInAppAd: InAppAd?
Подпишитесь на состояние загрузчика через делегат:
loader.delegate = self
Реализуйте протокол:
extension ViewController: InAppAdLoaderDelegate {
func inAppAdLoader(_ loader: any InAppAdLoaderProtocol, didChangeState state: InAppAdLoader.State) {
switch state {
case let .loaded(inAppAd):
self.loadedInAppAd = inAppAd
case let .failed(inAppAdLoadError):
break
}
}
}
При загрузке рекламы необходимо передавать padId, который можно получить в рекламной админке либо от менеджера. Для отладки можно использовать тестовые padId (см. Отладка).
Вызовите метод InAppAdLoader#load:
loader.load(
padId: "1",
targetings: [
"some_targeting": "value"
],
isDebugCreativeEnabled: false
)
#
Параметры запроса
#
2. Таргетирование
Передайте словарь таргетингов при загрузке рекламы. Подробнее о таргетингах — в разделе Таргетирование.
let targetings: [String: String] = ["gender": "female"]
loader.load(
padId: 1,
targetings: targetings
)
#
3. Обработка результата запроса и показ загруженной рекламы
Обработайте результат загрузки рекламы:
extension ViewController: InAppAdLoaderDelegate {
func inAppAdLoader(_ loader: any InAppAdLoaderProtocol, didChangeState state: InAppAdLoader.State) {
switch state {
case let .loaded(inAppAd):
// Для показа загруженной рекламы передайте текущий `UIViewController`:
MadsSDK.showInAppAd(
inAppAd,
inVC: self
)
case let .failed(inAppAdLoadError):
// Запрос за рекламой завершился с ошибой.
break
}
}
}
#
Возможные состояния
#
Параметры показа
#
4. Кастомизация UI (Modal Window)
Tip
Кастомизация будет удалена из настроек и вынесена в ответ сервера в будущих версия SDK. Кастомизировать рекламу можно будет в админ панели.
Для кастомизации внешнего вида модального окна задайте параметры через UIConfiguration:
Цвет можно указать через hex-строку (#ff0000) или UIColor:
public enum Color {
case hex(String)
case uiColor(UIColor)
}
Пример кастомизации:
let uiConfig = UIConfiguration(
primaryColor: .uiColor(UIColor.red),
secondaryColor: .uiColor(UIColor.grey),
cornerRadius: 15
)
MadsSDK.showInAppAd(
inAppAd,
inVC: self,
uiConfig: uiConfig
)
#
5. Реакция на события
SDK не реагирует на действия пользвателя на рекламном объявлении (такие как "нажатие на кнопку" и т.д.). Реакцию на эти действия необходимо реализовать на стороне интегрирующего приложения:
Подпишитесь на события рекламного объекта через делегат:
inAppAd.delegate = self
self.inAppAd = inAppAd
Реализуйте протокол:
extension ViewController: InAppAdDelegate {
func inAppAd(_ ad: InAppAd, didEmit event: InAppAd.Event) {
switch event {
case .shown:
break
case .failedToShow:
break
case let .deeplinkClicked(uRL):
break // необходимо обработать открытие диплинка
case let .promocodeClicked(promocode)
break
case .dismissed:
break
}
}
}
#
Возможные значения InAppAd.Event
Tip
В будущих версиях SDK Actions vs Events будут разделены аналогично android. Actions - обязательны к обработке на интегрирующей стороне, Event - необязательные
#
Пример
Полный пример интеграции In App рекламы — в репозитории на GitHub.