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

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

  1. Добавление Rewarded Ad в проект
  2. Загрузка рекламы
  3. Показ рекламы
  4. События рекламы с вознаграждением
  5. Очистка рекламы

Добавление Rewarded Ad в проект

Чтобы подключить рекламу, создайте объект RewardedAd в скрипте (на C#), который прикреплен к GameObject.

...
using YandexMobileAds;
using YandexMobileAds.Base;
...

public class YandexMobileAdsRewardedAdDemoScript : MonoBehaviour
{
    private RewardedAd rewardedAd;
    ...
    private void RequestRewardedAd()
    {
        string adUnitId = "YOUR_adUnitId";

        rewardedAd = new RewardedAd(adUnitId);
    }
    ...
}
Скопировано

Конструктор RewardedAd содержит параметр adUnitIdуникальный идентификатор, который выдается в Партнерском интерфейсе и имеет следующий вид: R-M-XXXXXX-Y.

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

После создания и настройки объекта класса RewardedAd необходимо загрузить рекламу. Для загрузки рекламы используйте метод LoadAd, принимающий в качестве параметра объект AdRequest.

rewardedAd.LoadAd(request);
Скопировано
Особенности загрузки
С помощью объекта AdRequest передайте код, полученный в интерфейсе Adfox (подробнее смотрите в помощи по Adfox):
...
// Код из интерфейса Adfox для работы с прямыми кампаниями.
private Dictionary<string, string> CreateAdfoxParameters()
{ 
    Dictionary<string, string> parameters = new Dictionary<string, string>()
    {
        {"adf_ownerid", "<example>"},
        {"adf_p1", "<example>"},
        {"adf_p2", "<example>"},
        {"adf_pt", "<example>"},
        ...
    };

    return parameters;
}

...

private void RequestRewardedAd()
{
    ...
    AdRequest request = new AdRequest.Builder()
        .WithParameters(CreateAdfoxParameters())
        .Build();
    rewardedAd.LoadAd(request);
    ...
}
Скопировано

Показ рекламы

После того, как реклама загружена, ее можно показать:

...
private void ShowRewardedAd()
{
    if (this.rewardedAd.IsLoaded())
    {
        rewardedAd.Show();
    }
    else
    {
        Debug.Log("Rewarded Ad is not ready yet");
    }
}
...
Скопировано

События рекламы с вознаграждением

Чтобы отслеживать события, происходящие в рекламе с вознаграждением, зарегистрируйте делегата для соответствующего EventHandler, как показано ниже:

...
private void RequestRewardedAd()
{
    ...
    rewardedAd.OnRewardedAdLoaded += HandleRewardedAdLoaded;
    rewardedAd.OnRewardedAdFailedToLoad += HandleRewardedAdFailedToLoad;
    rewardedAd.OnReturnedToApplication += HandleReturnedToApplication;
    rewardedAd.OnLeftApplication += HandleLeftApplication;
    rewardedAd.OnAdClicked += HandleAdClicked;
    rewardedAd.OnRewardedAdShown += HandleRewardedAdShown;
    rewardedAd.OnRewardedAdDismissed += HandleRewardedAdDismissed;
    rewardedAd.OnImpression += HandleImpression;
    rewardedAd.OnRewarded += HandleRewarded;
    rewardedAd.OnRewardedAdFailedToShow += HandleRewardedAdFailedToShow;
    ...
}

public void HandleRewardedAdLoaded(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardedAdLoaded event received");
}

public void HandleRewardedAdFailedToLoad(object sender, AdFailureEventArgs args)
{
    MonoBehaviour.print(
        "HandleRewardedAdFailedToLoad event received with message: " + args.Message);
}

public void HandleReturnedToApplication(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleReturnedToApplication event received");
}

public void HandleLeftApplication(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleLeftApplication event received");
}

public void HandleAdClicked(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleAdClicked event received");
}

public void HandleRewardedAdShown(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardedAdShown event received");
}

public void HandleRewardedAdDismissed(object sender, EventArgs args)
{
    MonoBehaviour.print("HandleRewardedAdDismissed event received");
}

public void HandleImpression(object sender, ImpressionData impressionData)
{
    var data = impressionData == null ? "null" : impressionData.rawData;
    MonoBehaviour.print("HandleImpression event received with data: " + data);
}

public void HandleRewarded(object sender, Reward args)
{
    MonoBehaviour.print("HandleRewarded event received: amout = " + args.amount + ", type = " + args.type);
}

public void HandleRewardedAdFailedToShow(object sender, AdFailureEventArgs args)
{
    MonoBehaviour.print(
        "HandleRewardedAdFailedToShow event received with message: " + args.Message);
}
Скопировано

Очистка рекламы

Когда объект рекламы больше не нужен, его можно удалить. Для этого вызовите метод Destroy:

rewardedAd.Destroy();
Скопировано