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

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

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

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

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

Пререквизит

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

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

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

  • Создать и настроить загрузчик рекламы RewardedAdLoader.
  • Настроить параметры загрузки объявления с помощью AdRequestConfiguration.
  • Загрузить рекламу RewardedAd.
  • Установить функции обратного вызова рекламного объявления.
  • Показать объявление RewardedAd.
  • Выдать пользователю награду за просмотр рекламы.

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

  1. Если вы получили ошибку при выполнении метода loadAd, не пытайтесь загрузить новое объявление снова. Если всё же необходимо это сделать, ограничьте число повторных попыток загрузки рекламы. Это поможет избежать постоянных неудачных запросов и проблем с подключением в случае ограничений.

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

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

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

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

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

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

let loader = await RewardedAdLoader.create()
    .catch((error) => {
        // Handle error gracefully
        return;
    });
if (!loader) {
    return;
}
let adRequestConfiguration = new AdRequestConfiguration(
    'R-M-XXXXXX-Y', // for debug you can use 'demo-rewarded-yandex'
    '20',
    'context-query',
    ['context-tag'],
    Gender.Female,
    new Location(55.734202, 37.588063)
);
let ad = await loader.loadAd(adRequestConfiguration)
    .then((ad) => {
        // Ad loaded successfully
        return ad;
    })
    .catch((error) => {
        // Handle error gracefully
        return;
    });

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

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

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

Чтобы показать рекламу с вознаграждением, используйте метод show():

ad.onAdShown = () => {
    console.log('Did show');
};
ad.onAdFailedToShow = (error) => {
    console.log(`Did fail to show with error: ${JSON.stringify(error)}`);
};
ad.onAdClicked = () => {
    console.log('Did click');
};
ad.onAdDismissed = () => {
    console.log('Did dismiss');
};
ad.onAdImpression = (impressionData) => {
    console.log(`Did track impression: ${JSON.stringify(impressionData)}`);
};
ad.onRewarded = (reward) => {
    console.log(`Did reward: ${JSON.stringify(reward)}`);
}
ad.show();

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

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

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

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

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

Важно

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

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

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

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

Данный инструмент проверяет корректность подключения rewarded рекламы и выводит в лог подробный отчет. Для просмотра отчета, выполните поиск по ключевому слову "YandexAds" в инструменте отладки Android-приложений Logcat.

adb logcat -v brief '*:S YandexAds'

В случае успешной интеграции, вы увидите следующее сообщение:

adb logcat -v brief '*:S YandexAds'
mobileads$ adb logcat -v brief '*:S YandexAds'
I/YandexAds(13719): [Integration] Ad type rewarded was integrated successfully

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

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

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

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

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

Важно

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

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

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

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

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

YMAMobileAds.enableLogging()

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

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

Советы

Предзагрузка объявления

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

Вызывайте loadAd заранее и в нужный момент сразу показывайте загруженное объявление.

Чтобы начать загрузку следующего объявления сразу после показа текущего, вы можете связать этот процесс с событием onAdDismissed.

Избыточное кеширование объявлений на экранах, которые вряд ли будут показаны, может снизить эффективность рекламы. Например, если в среднем пользователи проходят 2–3 уровня игры за раз, не стоит кешировать объявления для 6–7 экранов. Так видимость рекламы снизится, и рекламная система может деприоритизировать приложение.

Чтобы кеширование работало на пользу приложения, обращайте внимание на метрику «Доля показов» или «Доля видимых показов» в партнерском интерфейсе. Если она ниже 20%, это повод задуматься над изменением алгоритма кеширования. Чем доля показов выше, тем лучше.

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