Реклама с вознаграждением

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

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

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

Это руководство покажет, как интегрировать рекламу с вознаграждением в iOS-приложение. В дополнение к примерам кода и инструкции оно содержит рекомендации по использованию данного формата рекламы, а также ссылки на дополнительные ресурсы.

Дополнительно об интеграции рекламы с вознаграждением смотрите в видео:

Пререквизит

  1. Выполните шаги по интеграции sdk, описанные в Быстром старте.
  2. Заранее проинициализируйте рекламный SDK.
  3. Убедитесь, что используете самую актуальную версию Yandex Mobile Ads SDK, а в случае использовании медиации — наиболее свежую версию единой сборки.

Имплементация

Основные шаги по интеграции рекламы с вознаграждением:

  • Создать и настроить загрузчик рекламы RewardedAdLoader.
  • Установить делегат и реализовать необходимые методы AdRewardedAdLoaderDelegate.
  • Загрузить рекламу.
  • При необходимости, установить делегат для объекта рекламы и реализовать необходимые методы AdRewardedAdDelegate.
  • Показать объявление.
  • Выдать пользователю награду за просмотр рекламы.

Особенности подключения рекламы с вознаграждением

  1. Все вызовы методов Yandex Mobile Ads SDK необходимо выполнять из главного потока.

  2. Попытка загрузить новое объявление при получении ошибки в методе func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) настоятельно не рекомендуется. Если вам необходимо загрузить объявление из func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError), ограничьте повторные попытки загрузки рекламы, чтобы избежать постоянных неудачных запросов за рекламой в случае ограничений подключения к сети.

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

Загрузка рекламы

Для загрузки рекламы с вознаграждением, необходимо создать экземпляр класса RewardedAdLoader.

Для уведомления об успешной или неудачной загрузке рекламы экземпляру класса RewardedAdLoader необходимо установить свойство делегата и реализовать делегат RewardedAdLoaderDelegate.

final class RewardedViewController: UIViewController {
    private lazy var rewardedAdLoader: RewardedAdLoader = {
        let loader = RewardedAdLoader()
        loader.delegate = self
        return loader
    }()
}

extension RewardedViewController: RewardedAdLoaderDelegate {
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) {
        // This method will call after successfully loading
    }

    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didFailToLoadWithError error: AdRequestError) {
        // This method will call after getting any error while loading the ad
    }
}

Для загрузки рекламного объявления Нам потребуется идентификатор рекламного места, полученный вами в ПИ (adUnitId).

Расширить параметры запроса за рекламой можно через AdRequest, передав в запросе данные об интересах пользователя, контекстные данные страницы, локацию или другие дополнительные данные. Дополнительные контекстные данные на запросе могут значительно улучшить качество рекламы. Подробнее читайте в разделе Таргетирование рекламы.

В следующем примере показано как загрузить рекламу с вознаграждением из View Controller.

final class RewardedViewController: UIViewController {
    private lazy var rewardedAdLoader: RewardedAdLoader = {
        let loader = RewardedAdLoader()
        loader.delegate = self
        return loader
    }()

    func loadAd() {
        let configuration = AdRequestConfiguration(adUnitID: "R-M-XXXXX-YY")
        rewardedAdLoader.loadAd(with: configuration)
    }
}

Показ объявления

Rewarded-реклама — стимулирующий формат рекламы, который позволяет пользователю получить вознаграждение за просмотр рекламы. В качестве вознаграждения может быть дополнительная жизнь или переход на следующий уровень в игре. Формат вознаграждения определяется приложением.

После успешной загрузки рекламы с вознаграждением, будет вызван метод func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) делегата RewardedAdDelegate. Используйте его, чтобы отобразить rewarded рекламу.

final class RewardedViewController: UIViewController {
    private var rewardedAd: RewardedAd?

    func showAd() {
        rewardedAd?.show(from: self)
    }
}

extension RewardedViewController: RewardedAdLoaderDelegate {
    func rewardedAdLoader(_ adLoader: RewardedAdLoader, didLoad rewardedAd: RewardedAd) {
        self.rewardedAd = rewardedAd
        self.rewardedAd.delegate = self

        showAd()
    }
}

Выдача награды

Если показ объявления успешно засчитан, будет вызван метод rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) делегата RewardedAdDelegate. Используйте его, чтобы выдать награду пользователю приложения.

final class RewardedViewController: UIViewController {
    private var rewardedAd: RewardedAd?
}

extension RewardedViewController: RewardedAdDelegate {
    func rewardedAd(_ rewardedAd: RewardedAd, didReward reward: Reward) {
        sendReward(reward)
    }
}

Тестирование интеграции рекламы с вознаграждением

Использование демоблоков для тестирования рекламы

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

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

Демонстрационный adUnitId: demo-rewarded-yandex.

Важно

Убедитесь, что перед выкладыванием приложения в store, вы заменили демонстрационный идентификатор рекламного места на настоящий, полученный в ПИ.

Список всех доступных демонстрационных идентификаторов рекламного места доступен в разделе Демоблоки для тестирования.

Проверка корректной интеграции рекламы

Проверить корректность интеграции рекламы можно через нативный инструмент Console.

Чтобы получить возможность просматривать расширенные логи, необходимо вызвать метод enableLogging класса YMAMobileAds.

YMAMobileAds.enableLogging()

Для просмотра логов SDK в инструменте Console установите sybsystem = com.yandex.mobile.ads.sdk. Так же вы можете фильтровать логи по категории и по уровню ошибки.

В случае обнаружения проблем при интеграции рекламы вы увидите подробный отчет о проблемах и рекомендации по их устранению.

Дополнительные ресурсы