Skip to content

Buzzoola/buzzoola-ads-sdk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ads SDK iOS

Это SDK - удобный инструмент монетизации приложений, совмещающий в себе рекламные объявления из аукциона стандарта OpenRTB (SSP Buzzoola) и другие рекламные сети (Яндекс и ВК). С помощью этого SDK можно отразить в своем приложении несколько форматов рекламных объявлений, таких как:

  • Баннерная реклама - небольшое рекламное объявление с заданными размерами с возможностью автообновления;
  • Нативная реклама - формат рекламы, внешний вид которой задается на стороне приложения;
  • Полноэкранная реклама - формат рекламы, отражающейся на весь экран с видео или с картинкой;
  • Реклама с вознаграждением - полноэкранный формат, за просмотр которого пользователь получает вознаграждение;
  • Instream реклама - формат видеорекламы, в котором рекламный ролик встраивается в видеопоток и проигрывается по заданному сценарию: перед основным видео, в середине или в конце.

Тех. информация

Текущая версия

Версия: 4.0.0

Требования для установки SDK

  • iOS 13.0+

Подключение SDK

Сейчас есть возможность подключить SDK с помощью SPM и CocoaPods.

CocoaPods

Варианты установки:

  1. Чтобы добавить библиотеку в проект c рекламой Buzzoola, ВК и Яндекс, добавьте в свой Podfile:
pod 'BuzzoolaAdsSDK', '4.0.0'
pod 'BuzzoolaAdsSDKYandex', '4.0.0'
  1. Если вы хотите использовать рекламу Buzzoola и ВК:
pod 'BuzzoolaAdsSDK', '4.0.0'
  1. Если вы хотите использовать только рекламу Buzzoola:
pod 'BuzzoolaAdsSDK/BuzzoolaAdsSDK', '4.0.0'
pod 'BuzzoolaAdsSDK/BuzzoolaAdsSDKAnalytics', '4.0.0'

Для корректной работы так же обязательно указать в Podfile:

install! 'cocoapods', :disable_input_output_paths => true # для отсутствия конфликтов с Assets
source 'https://github.com/Buzzoola/buzzoola-ads-sdk' # ссылка на спецификацию BuzzoolaAdsSDK
source 'https://github.com/MobileTeleSystems/mts-analytics-podspecs' # ссылка на спецификацию Аналитики
source 'https://github.com/CocoaPods/Specs.git' # ссылка на общие спецификации

Swift Package Manager

Выберите File — Add Packages Dependencies. В поиск добавьте URL проекта, проверьте, что выбрана последняя версия 4.0.0 или задайте ее вручную, а после нажмите Add Package.

Ссылка на внешний репозиторий:

https://github.com/Buzzoola/buzzoola-ads-sdk

SDK имеет в себе четыре подмодуля.

  1. Если вы хотите использовать только рекламу Buzzoola: подключите в свой проект модуль BuzzoolaAdsSDK и BuzzoolaAdsSDKAnalytics.

  2. Если вы хотите использовать рекламу Buzzoola и ВК: подключите в свой проект модуль BuzzoolaAdsSDK, BuzzoolaAdsSDKMyTarget и BuzzoolaAdsSDKAnalytics.

  3. Если вы хотите использовать рекламу Buzzoola, ВК и Яндекс: подключите в свой проект модуль BuzzoolaAdsSDK, BuzzoolaAdsSDKMyTarget, BuzzoolaAdsSDKYandex и BuzzoolaAdsSDKAnalytics.

Использование SDK

Принцип работы зависит от выбранного формата рекламы.

  • Баннерная реклама - необходимо создать вью нужного класса, разместить его в своей верстке, загрузить рекламу, и SDK наполнит это вью нужным содержимым;
  • Нативная реклама - необходимо сверстать вью с множеством компонентов (текст, картинки, вью), связать компоненты, загрузить рекламу, и SDK наполнит это вью нужным содержимым;
  • Полноэкранная реклама и реклама с вознаграждением - размещается на отдельном вью контроллере модально на весь экран, необходимо лишь передать нужному методу свой вью контроллер, поверх которого отразится данная реклама;
  • Instream реклама - необходимо сверстать плеер, на котором будет показано рекламное видео, связать компоненты, разместить поверх вашего плеера и регулировать видимость, следуя необходимой логике.

Инициализация SDK

Перед использованием обязательно выполнить инициализацию SDK. В этот момент осуществляется запрос доступа к рекламному идентификатору и всплывает системное уведомление пользователю вашего приложения. В своем Info.plist не забудьте добавить ключ NSUserTrackingUsageDescription и описать для чего вы будете использовать отслеживание. Если вы подключаете Яндекс, то необходимо в Info.plist так же указать в массиве SKAdNetworkItems элемент SKAdNetworkIdentifier со значением zq492l623r.skadnetwork, это требование SDK Яндекса, более подробно - https://ads.yandex.com/helpcenter/ru/dev/ios/quick-start#skad.

Предпочтительно размещать инициализацию в AppDelegate, чтобы точно гарантировать работу SDK. Без инициализации вызов методов SDK не имеет смысла.

Ads().configure {
   // SDK was initialized.
}

Проверка интеграции SDK

Для проверки интеграции можно включить режим отладки. Для этого необходимо вызвать:

Ads().enableLogging(true)

Логи успешной интеграции отображаются в консоли с указанием [Ads SDK]. В случае ошибки при интеграции - в логах появится сообщение.

Вызов рекламы

Для показа рекламного объявления во всех форматах всегда изначально создается экземпляр класса AdsRequest - набор полей с вашим уникальным placementID и необходимыми параметрами для подбора удовлетворяющих запросу реклам.

class AdsRequest
Название поля Тип поля Обязательность
placementID Int Да
width Int(?) Для формата баннер
height Int(?) Для формата баннер
latitude Double? Нет
longitude Double? Нет
gender Gender? Нет
age Int? Нет
extensions [String : Any]? Нет
isDarkTheme Bool? Нет

Баннерная реклама

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

Шаг 1: Создайте вью BannerAdView и разместите в своей верстке, где вам захочется

var bannerView = BannerAdView()

Шаг 2: Создайте запрос для получения рекламы

let request = AdsRequest(placementID: placementID, width: width, height: height)

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

Шаг 3: Вызовите метод loadAd(request: AdsRequest) для получения рекламы

class ViewController: UIViewController {
    ...
    var bannerView = BannerAdView() # вью рекламного объявления  
    ...

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID, width: width, height: height) # запрос для получение рекламы

        bannerView.loadAd(request: request) # вызов метода загрузки рекламы
    }
}

Шаг 4: Подпишитесь на делегат BannerAdEventProtocol, чтобы отслеживать события рекламы

extension ViewController: BannerAdEventProtocol {

    # Метод для обработки результата загрузки

    func onAdLoaded() {}

    # Метод для обработки impression - события, когда реклама засчитана
    # Параметры:
    # — data: String? — дополнительная информация, присутствует для реклам Яндекса

    func onImpression(_ data: String?) {}

    # Метод для обработки кликов по рекламному объявлению 

    func onAdClicked() {}

    # Метод для обработки выходов из приложения

    func onLeftApplication() {}

    # Метод для обработки возврата в приложение

    func onReturnedToApplication() {}

    # Метод для обработки ошибки загрузки
    # Параметры:
    # — adError: AdError - ошибка получения рекламы

    func onAdFailed(adError: AdError) {}
}

Шаг 5: Вызовите метод destroy() для загрузки следующего баннера

Для повторной загрузки рекламы предварительно необходимо вызвать метод destroy() перед очередным loadAd. Метод очистит вью, верстку, обеспечит отсутствие утечек памяти и конфликтов констрейнтов для последующего отображения. Если вы вызовете loadAd, не вызвав предварительный destroy, или же когда выполнение предыдущего loadAd не было успешно завершено - вы получите ошибку в лог.

Автообновление баннеров

Есть возможность настроить автообновление баннеров, в этом случае нет необходимости в ручную всякий раз вызывать метод loadAd и destroy для следующей загрузки рекламного объявления. Баннеры будут меняться друг за другом автоматически по заданному таймеру. Для поддержки автообновления, вызовите метод setRefreshAd(_ time: Int) у BannerAdView. В параметрах можно указать время обновления баннера в диапазоне от 10 секунд до 1 минуты. По умолчанию время обновления составляет 30 секунд. Важно: устанавливать автообновление необходимо до функции loadAd.

class ViewController: UIViewController {
    ...
    var bannerView = BannerAdView() # вью рекламного объявления  
    ...

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID, width: width, height: height) # запрос для получение рекламы

        bannerView.setRefreshAd(10) # автообновение баннера каждые 10 секунд
        bannerView.loadAd(request: request) # вызов метода загрузки рекламы
    }
}

Нативная реклама

Этот формат рекламы позволяет создать рекламное объявление с кастомной версткой.

Шаг 1: Создайте пользовательский AdView с необходимыми элементами

Данную вью необходимо унаследовать от класса NativeAdView.

class NativeCustomAdView: NativeAdView {

    private var title: UILabel?

    private var domain: UILabel?

    ...
}

Для отображения рекламы должны быть использованы следующие элементы:

Элемент Описание Тип элемента Обязательность
adTitle Заголовок UILabel Да
adDomain Домен UILabel Да
adAge Возрастная метка UILabel Да
adBadge Рекламная метка UILabel Да
adWarning Предупреждение UILabel Да, для медиаций
adInfo Значок меню UIButton Да
adActionBtn Кнопка действия UIButton Да
adMedia Медиа (картинка/видео) NativeMediaView Да
adIcon Иконка UIImageView Да, для типа APP
adPrice Цена UILabel Да, для типа APP
adDescription Основной текст UILabel Нет
adFavicon Значок веб-сайта UIImageView Нет
adReviews Количество оценок UILabel Нет
adRating Рейтинг View implements Rating Нет

ВАЖНО! Необходимо в верстке размещать ваш наследник NativeAdView в пустой UIView. Эта обертка обеспечит корректную работу и отображение рекламных объявлений. Пример:

var container = UIView()
var nativeView = NativeCustomAdView()
...
yourLayout.addSubview(container)
container.addSubview(nativeView)
...
NSLayoutConstraint.activate([
    nativeView.topAnchor.constraint(equalTo: container.topAnchor),
    nativeView.leftAnchor.constraint(equalTo: container.leftAnchor),
    nativeView.rightAnchor.constraint(equalTo: container.rightAnchor),
    nativeView.bottomAnchor.constraint(equalTo: container.bottomAnchor)
])

Шаг 2: Cвяжите элементы с вашей версткой

func bindAssets() {
    adTitle = title
    adDomain = domain
    adWarning = warning
    adBadge = sponsored
    adInfo = feedback
    adActionBtn = callToAction
    adMedia = media
    adPrice = price
    adReviews = reviewCount
    adRating = ratingView
    adDescription = body
    adIcon = iconImage
    adAge = age
}

Шаг 3: Создайте загрузчик объекта рекламы, используя NativeAdLoader

Создайте экземпляр класса NativeAdLoader. Создавать загрузчиков можно несколько.

class ViewController: UIViewController {

    private lazy var adLoader: NativeAdLoader = {
        let adLoader = NativeAdLoader()
        adLoader.delegate = self
        return adLoader
    }()
}

Шаг 4: Подпишите NativeAdLoader на NativeAdLoaderProtocol, для получения уведомлений о загрузке и ошибке

Загрузка осуществляется асинхронно, при получении рекламы вызываются соответствующие методы делегата.

extension ViewController: NativeAdLoaderProtocol {

    # Метод для обработки результата загрузки
    # Параметры:
    # — loader: NativeAdLoader - лоадер, который получил рекламы
    # — ads: [NativeAd] - полученные рекламы

    func onAdsLoaded(loader: NativeAdLoader, ads: [NativeAd]) {}

    # Метод для обработки ошибки загрузки
    # Параметры:
    # — loader: NativeAdLoader - лоадер, который получил рекламы
    # — adError: AdError - ошибка получения рекламы

    func onAdsFailed(loader: NativeAdLoader, adError: AdError) {}
}

Шаг 5: Создайте запрос для получения реклам

let request = AdsRequest(placementID: placementID)

Шаг 6: Вызовите метод loadAd(request: AdsRequest) для получения рекламы

class ViewController: UIViewController {

    # Лоадер для загрузки реклам

    private lazy var adLoader: NativeAdLoader = { 
        let adLoader = NativeAdLoader()
        adLoader.delegate = self  # подписка на делегат NativeAdLoaderDelegate
        return adLoader
    }()

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID,) # запрос для получение рекламы

        adLoader.loadAd(request: request) # вызов метода загрузки реклам
    }
}

Шаг 7: Выберите NativeAd для отображения и подпишите на делегат NativeAdDelegate для отслеживания событий по рекламному объявлению

extension ViewController: NativeAdDelegate {

    # Метод для обработки результата отображения рекламного объявления
    # Параметры:
    # - ad: NativeAd - текущая реклама

    func onAdLoaded(_ ad: NativeAd) {}

    # Метод для обработки ошибки отображения рекламного объявления
    # Параметры:
    # - ad: NativeAd - текущая реклама
    # - adError: AdError - ошибка отображения рекламы

	func onAdFailed(_ ad: NativeAd, adError: AdError) {}

    # Метод для обработки закрытия рекламного объявления
    # Параметры:
    # - ad: NativeAd - текущая реклама

	func onCloseAd(_ ad: NativeAd) {}

    # Метод для обработки кликов по рекламному объявлению 
    # Параметры:
    # - ad: NativeAd - текущая реклама

	func onAdClicked(_ ad: NativeAd) {}

    # Метод для обработки выходов из приложения
    # Параметры:
    # - ad: NativeAd - текущая реклама

	func onLeftApplication(_ ad: NativeAd) {}

    # Метод для обработки возврата в приложение
    # Параметры:
    # - ad: NativeAd - текущая реклама

	func onReturnedToApplication(_ ad: NativeAd) {}

    # Метод для обработки impression - события, когда реклама засчитана
    # Параметры:
    # - ad: NativeAd - текущая реклама
    # — data: String? — дополнительная информация, присутствует для реклам Яндекса

	func onImpression(_ ad: NativeAd, _ data: String?) {}
}

Шаг 8: Подпишите выбранный NativeAd на делегат ImageLoadingDelegate для отслеживания загрузки картинок

extension ViewController: ImageLoadingDelegate {

    # Метод для обработки загрузки картинки
    # Параметры:
    # - ad: NativeAd - реклама, у которой получена картинка
    # - color: UIColor? - приоритетный цвет полученной картинки

    func onImageLoaded(ad: NativeAd, color: UIColor?) {}

    # Метод для обработки ошибки загрузки картинки

    func onImageLoadFailed(ad: NativeAd) {}
}

Шаг 9: Свяжите выбранный NativeAd с вашей кастомной вью методом bindAd для наполнения вашей вью рекламным контентом

extension ViewController: NativeAdLoaderProtocol {

    func onAdsLoaded(ads: [NativeAd]) {
        let ad = ads.first # выбор первой рекламы для отображения

        ad?.delegate = self # подписка на делегат NativeAdDelegate
        ad?.imageDelegate = self # подписка на делегат ImageLoadingDelegate

        ad?.bindAd(yourCustomView) # связка рекламного объявления с кастомной вью для отображения
    }
}

Шаг 10: Вызовите метод destroy() для показанного NativeAd для отображения следующей рекламы

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

Ресурсы рекламы

У рекламы NativeAd можно получить доступ к полю: type: NativeAdType - тип полученной рекламы (app или content, значение app принимает только в случае с особой рекламой Яндекса); meta: [String: Any?]? - дополнительные параметры в виде словаря ключ-значение; adAssets: NativeAdAssets - ресурсы рекламы

struct NativeAdAssets
Название поля Тип поля Описание
title String? заголовок
domain String? домен
age String? возраст
description String? описание
actionTitle String? кнопка
warning String? предупреждение - для медиаций
sponsored String? маркер рекламы
price String? цена
rating NSNumber? рейтинг
reviewCount String? количество просмотров
media String? ссылка на видео
image UIImage? картинка
icon UIImage? иконка
favicon UIImage? специфика Яндекса
extras [String: Any?]? дополнительные ассеты в виде словаря ключ-значение

InStream реклама

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

Шаг 1: Создайте свой кастомный плеер с необходимыми элементами

Данную вью необходимо унаследовать от класса InstreamPlayerView.

Для отображения рекламы на этом вью должны присутствовать следующие элементы:

Id элемента Описание Тип элемента
adBadge Рекламная метка UILabel
adInfo Значок меню UIButton
adActionBtn Кнопка действия UIButton
adMedia Медиа (видео) NativeMediaView

Вы можете кастомизировать InstreamPlayerView с помощью следующих методов:

# Метод для задания фона видео
# Параметры:
# — color: UIColor - цвет для фона видео

func setBackground(_ color: UIColor)

# Метод для задания видимости линии прогресса
# Параметры:
# — show: Bool - по дефолту true - видима

func showProgressBar(_ show: Bool)

# Метод для задания цвет линии прогресса
# Параметры:
# — color: UIColor - цвет линии прогресса

func setProgressBarColor(_ color: UIColor)

# Метод для задания цвета и фона лоадера
# Параметры:
# — color: UIColor - цвет лоадера
# — background: UIColor? - цвет подложки лоадера, по дефолту hex: 333333 с непрозрачностью 0,64

func setLoader(color: UIColor, background: UIColor?)

Шаг 2: Cвяжите элементы с вашей версткой

func bindAssets() {
    adBadge = badgeLabel
    adInfo = infoButton
    adActionBtn = actionButton
    adMedia = media
}

Шаг 3: Создайте загрузчик объекта рекламы, используя InstreamAdLoader

Создайте экземпляр класса InstreamAdLoader.

class ViewController: UIViewController {

    private lazy var adLoader: InstreamAdLoader = {
        let adLoader = InstreamAdLoader()
        adLoader.delegate = self
        return adLoader
    }()
}

Шаг 4: Подпишите InstreamAdLoader на InstreamAdLoaderProtocol, для получения уведомлений о загрузке и ошибке

Загрузка осуществляется асинхронно, при получении рекламы вызываются соответствущие методы делегата.

extension ViewController: InstreamAdLoaderProtocol {

    # Метод для обработки результата загрузки
    # Параметры:
    # — ad: InstreamAd - полученная видео-реклама

    func onAdLoaded(ad: InstreamAd) {}

    # Метод для обработки ошибки загрузки
    # Параметры:
    # — adError: AdError - ошибка получения рекламы

    func onAdFailed(adError: AdError) {}
}

Шаг 5: Создайте запрос для получения реклам

let request = AdsRequest(placementID: placementID)

Шаг 6: Вызовите метод loadAd(request: AdsRequest) для получения рекламы

class ViewController: UIViewController {

    # Лоадер для загрузки реклам

    private lazy var adLoader: InstreamAdLoader = { 
        let adLoader = InstreamAdLoader()
        adLoader.delegate = self  # подписка на делегат InstreamAdLoaderDelegate
        return adLoader
    }()

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID,) # запрос для получение рекламы

        adLoader.loadAd(request: request) # вызов метода загрузки реклам
    }
}

Шаг 7: Подпишите полученный InstreamAd на делегат InstreamAdPlaybackDelegate для отслеживания событий по рекламному объявлению

extension ViewController: InstreamAdPlaybackDelegate {

    # Метод для обработки результата завершения воспроизведения рекламных видео
    # Здесь можно запустить заново основное видео

    func onComplete() {}

    # Метод для обработки ошибки отображения рекламного объявления
    # Параметры:
    # - adError: AdError - ошибка отображения/воспроизведения рекламы

    func onFailed(adError: AdError) {}

    # Метод для обработки начала воспроизведение всех рекламных видео
    # InstreamPlayerView должен стать видимым, если был скрыт

    func onStarted() {}

    # Метод для обработки начала воспроизведения рекламного видео
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdStarted(video: VideoAd) {}

    # Метод срабатывает каждую секунду, уведомляя сколько осталось времени до конца воспроизведения видео. 
    # Здесь можно настроить таймер и кнопку "Пропустить"
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 
    # - timeLeft: Float - прошло времени

    func onVideoAdTimeLeftChange(video: VideoAd, timeLeft: Float) {}

    # Метод для обработки завершения воспроизведения рекламного видео
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdCompleted(video: VideoAd) {}

    # Метод для обработки паузы воспроизведения рекламного видео
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdPaused(video: VideoAd) {}

    # Метод для обработки возобновления воспроизведения рекламного видео после паузы
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdResumed(video: VideoAd) {}

    # Метод для обработки ошибки воспроизведения рекламного видео
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 
    # - error: String - причина ошибки

    func onVideoAdError(video: VideoAd, error: String) {}

    # Метод для обработки impression - события, когда реклама засчитана
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdImpression(video: VideoAd) {}

    # Метод для обработки кликов по рекламному видео
    # Параметры:
    # - video: VideoAd - воспроизводимое видео 

    func onVideoAdClicked(video: VideoAd) {}
}

Шаг 8: Свяжите InstreamAd с вашим кастомным плеером методом attachPlayerView для наполнения рекламным контентом и начните воспроизведение реклам

extension ViewController: NativeAdLoaderProtocol {

    func onAdLoaded(ad: InstreamAd) {
        ad.playbackDelegate = self # подписка на делегат InstreamAdPlaybackDelegate

        ad.attachPlayerView(yourCustomPlayer) # связка рекламного объявления с кастомным плеером для отображения

        ad.start() # старт воспроизведения видео-реклам
    }
}

Объект InstreamAd

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

Описание дополнительных методов:

# Метод, позволяющий пропустить текущее рекламное видео
func skip()

# Метод, позволяющий остановить показ всего рекламного блока
func stop()

# Метод, позволяющий обработать клик по рекламе (при необходимости его дополнительного вызова)
func handleClick()

# Метод, позволяющий изменить звук видео. Значения от 0.0 до 1.0. 
# По дефолту видео запускается с выключенным звуком

func setVolume(volume: Float)

Объект VideoAd

Объект VideoAd содержит в себе поля duration и skipOffset, длина видео и время, через которое будет разрешен пропуск видео (в секундах). Обратите внимание, что skipOffset может быть равен duration, в таком случае пропуск по сути невозможен.

Interstitial реклама

Шаг 1: Создайте загрузчик объекта рекламы, используя InterstitialAdLoader

Создайте экземпляр класса InterstitialAdLoader.

private lazy var adLoader: InterstitialAdLoader = {
    let adLoader = InterstitialAdLoader()
    adLoader.delegate = self
    return adLoader
}()

Шаг 2: Подпишите InterstitialAdLoader на InterstitialAdLoaderProtocol, для получения уведомлений о загрузке и ошибке

Загрузка осуществляется асинхронно, при получении рекламы вызываются соответствущие методы делегата.

extension ViewController: InterstitialAdLoaderProtocol {

    # Метод для обработки результата загрузки
    # Параметры:
    # — ad: InterstitialAd - полученная реклама

    func onAdLoaded(ad: InterstitialAd) {}

    # Метод для обработки ошибки загрузки
    # Параметры:
    # — adError: AdError - ошибка получения рекламы

    func onAdFailedToLoad(adError: AdError) {}
}

Шаг 3: Создайте запрос для получения реклам

let request = AdsRequest(placementID: placementID)

Шаг 4: Вызовите метод loadAd(request: AdsRequest) для получения рекламы

class ViewController: UIViewController {

    # Лоадер для загрузки реклам

    private lazy var adLoader: InterstitialAdLoader = { 
        let adLoader = InterstitialAdLoader()
        adLoader.delegate = self  # подписка на делегат InterstitialAdLoaderDelegate
        return adLoader
    }()

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID,) # запрос для получение рекламы

        adLoader.loadAd(request: request) # вызов метода загрузки реклам
    }
}

Шаг 5: Подпишите полученный InterstitialAd на делегат InterstitialAdDelegate для отслеживания событий по рекламному объявлению

extension ViewController: InterstitialAdDelegate {

    # Метод для обработки результата отображения рекламного объявления

    func onAdShown() {}

    # Метод для обработки ошибки отображения рекламного объявления
    # Параметры:
    # - adError: AdError - ошибка отображения рекламы

    func onAdFailed(adError: AdError) {}

    # Метод для обработки кликов по рекламному объявлению

    func onAdClicked() {}

    # Метод для обработки закрытия рекламного объявления

    func onAdDismissed() {}

    # Метод для обработки impression - события, когда реклама засчитана
    # Параметры:
    # — data: String? — дополнительная информация, присутствует для реклам Яндекса

    func onImpression(_ data: String?) {}
}

Шаг 6: Отобразите рекламное объявление

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

extension ViewController: InterstitialAdLoaderProtocol {

    func onAdLoaded(ad: InterstitialAd) {
        ...
        ad.delegate = self # подписка на делегат InterstitialAdDelegate

        ad.show(from: self) # отображение рекламного объявления
        ...
    }
}

Rewarded реклама

Шаг 1: Создайте загрузчик объекта рекламы, используя RewardedAdLoader

Создайте экземпляр класса RewardedAdLoader.

private lazy var adLoader: RewardedAdLoader = {
    let adLoader = RewardedAdLoader()
    adLoader.delegate = self
    return adLoader
}()

Шаг 2: Подпишите RewardedAdLoader на RewardedAdLoaderProtocol, для получения уведомлений о загрузке и ошибке

Загрузка осуществляется асинхронно, при получении рекламы вызываются соответствущие методы делегата.

extension ViewController: RewardedAdLoaderProtocol {

    # Метод для обработки результата загрузки
    # Параметры:
    # — ad: RewardedAd - полученная реклама

    func onAdLoaded(ad: RewardedAd) {}

    # Метод для обработки ошибки загрузки
    # Параметры:
    # — adError: AdError - ошибка получения рекламы

    func onAdFailedToLoad(adError: AdError) {}
}

Шаг 3: Создайте запрос для получения реклам

let request = AdsRequest(placementID: placementID)

Шаг 4: Вызовите метод loadAd(request: AdsRequest) для получения рекламы

class ViewController: UIViewController {

    # Лоадер для загрузки реклам

    private lazy var adLoader: RewardedAdLoader = { 
        let adLoader = RewardedAdLoader()
        adLoader.delegate = self  # подписка на делегат RewardedAdLoaderDelegate
        return adLoader
    }()

    func viewDidLoad {
        let request = AdsRequest(placementID: placementID,) # запрос для получение рекламы

        adLoader.loadAd(request: request) # вызов метода загрузки реклам
    }
}

Шаг 5: Подпишите полученный RewardedAd на делегат RewardedAdDelegate для отслеживания событий по рекламному объявлению

extension RewardedView: RewardedAdDelegate {

    # Метод для обработки результата отображения рекламного объявления

    func onAdShown() {}

    # Метод для обработки ошибки отображения рекламного объявления
    # Параметры:
    # - adError: AdError - ошибка отображения рекламы

    func onAdFailed(adError: AdError) {}

    # Метод для обработки кликов по рекламному объявлению

    func onAdClicked() {}

    # Метод для обработки закрытия рекламного объявления

    func onAdDismissed() {}

    # Метод для обработки impression - события, когда реклама засчитана
    # Параметры:
    # — data: String? — дополнительная информация, присутствует для реклам Яндекса

    func onImpression(_ data: String?) {}

    # Метод для обработки получения вознаграждения. 
    # Срабатывает по истечению 15 секунд для реклам с картинкой и после просмотра видео для видео-реклам
    # Параметры:
    # — reward: Reward - структура с полями type: String (тип) и amount: Int? (стоимость)

    func onReward(reward: Reward) {}
}

Шаг 6: Отобразите рекламное объявление

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

extension ViewController: RewardedAdLoaderProtocol {

    func onAdLoaded(ad: RewardedAd) {
        ...
        ad.delegate = self

        ad.show(from: self)
        ...
    }
}

About

In-app advertisement SDK

Resources

License

Stars

Watchers

Forks

Packages

No packages published