Руководство по миграции на версию 6

Другие платформы

Важно

Обязательно обновите версии используемых адаптеров на актуальные (Медиация Яндекса и адаптеры для сторонних медиационных сетей). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

Для корректной работы необходимо включить кастомные template's для генерируемого проекта. Для этого в настройках сборки (Build Settings → Player Settings → Publishing Settings → Build) нужно поставить галочку Custom Main Gradle Template.

Рекомендуется всегда использовать Custom Main Gradle Template и Custom Gradle Properties Template при сборке Unity-приложения, это позволяет избежать и других возможных ошибок.

Баннеры

Класс AdSize переименован в BannerAdSize. Удален метод flexibleSize(int width, int maxHeight).

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

Для создания адаптивного sticky-баннера — метод BannerAdSize.stickySize(int width).

Адаптивный sticky-баннер — небольшое, автоматически обновляемое рекламное объявление, которое располагается внизу или вверху экрана приложения.

Баннер не перекрывает основной контент приложения и часто используется в приложениях-играх.

Высота sticky-баннера определяется автоматически, адаптируясь под размер экрана устройства и не превышает 15% высоты экрана.

Важно

В адаптивном sticky-баннере с версии 6.0.0 появилось автообновление.

Если у вас ранее было реализовано автообновление для sticky-баннера, его следует отключить.

Для создания адаптивного inline-баннера — метод BannerAdSize.inlineSize(int width, int maxHeight).

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

Высота баннера подбирается автоматически и может достигать высоты экрана устройства.

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

Для обратной совместимости сохранен метод fixedSize(int width, int height), однако его использование не рекомендуется. Используйте inlineSize(int width, int maxHeight) или stickySize(int width). В SDK 6.1.0 высота баннера рассчитывается автоматически и известна до отправки запроса рекламы. Эту высоту можно использовать для верстки экрана.

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

Был изменен подход к созданию и загрузке рекламы. Теперь есть объект-загрузчик RewardedAdLoader, который занимается загрузкой рекламных объявлений, и объект рекламы RewardedAd, получаемый из события загрузки рекламного объявления OnAdLoaded.

Подробнее ознакомиться с новым апи можно в справочнике SDK.

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

SDK 5

Один объект на загрузку и показ рекламного объявления:

private RewardedAd rewardedAd;

private void RequestRewardedAd()
{
    string adUnitId = "demo-rewarded-yandex"; // замените на "R-M-XXXXXX-Y"
    rewardedAd = new RewardedAd(adUnitId);

    AdRequest request = new AdRequest.Builder().Build();
    rewardedAd.LoadAd(request);
}

SDK 6

Загрузчик RewardedAdLoader для загрузки нескольких рекламных объявлений.

private void SetupLoader()
{
  rewardedAdLoader = new RewardedAdLoader();
  rewardedAdLoader.OnAdLoaded += HandleRewardedAdLoaded;
  rewardedAdLoader.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
}

private void RequestRewardedAd()
{
    string adUnitId = "demo-rewarded-yandex"; // замените на "R-M-XXXXXX-Y"
    AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(adUnitId).Build();
    rewardedAdLoader.LoadAd(adRequestConfiguration);
}

public void HandleAdLoaded(object sender, RewardedAdLoadedEventArgs args)
{
    this.interstitial = args.RewardedAd;
}

public void HandleAdFailedToLoad(object sender, AdFailedToLoadEventArgs args)
{
    Debug.Log($"HandleAdFailedToLoad event received with message: {args.Message}");
}

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

SDK 5

Перед показом нужно проверить, загружена ли реклама.

private void ShowRewardedAd()
{
    if (rewardedAd != null && rewardedAd.IsLoaded())
    {
        rewardedAd.Show();
    }
}

SDK 6

Проверка, загружена ли реклама, не требуется.

private void ShowRewardedAd()
{
    if (rewardedAd != null)
    {
        rewardedAd.Show();
    }
}

Подписка на события жизненного цикла рекламы

SDK 5

Все события приходят в едином объекте RewardedAd.

rewardedAd.OnRewardedAdLoaded += HandleRewardedAdLoaded;
rewardedAd.OnRewardedAdFailedToLoad += HandleRewardedAdFailedToLoad;
rewardedAd.OnReturnedToApplication += HandleReturnedToApplication;
rewardedAd.OnLeftApplication += HandleLeftApplication;
rewardedAd.OnAdClicked += HandleAdClicked;
rewardedAd.OnRewardedAdShown += HandleRewardedAdShown;
rewardedAd.OnRewardedAdFailedToShow += HandleRewardedAdFailedToShow;
rewardedAd.OnRewardedAdDismissed += HandleRewardedAdDismissed;
rewardedAd.OnImpression += HandleImpression;
rewardedAd.OnRewarded += HandleRewarded;

SDK 6

Cобытия загрузки рекламы приходят в объекте RewardedAdLoader, а события показа — в объекте RewardedAd. Унифицированы названия событий. Удалены события OnLeftApplication и OnReturnedToApplication.

rewardedAdLoader.OnAdLoaded += HandleRewardedAdLoaded;
rewardedAdLoader.OnAdFailedToLoad += HandleRewardedAdFailedToLoad;
// ...
rewardedAd.OnAdClicked += HandleAdClicked;
rewardedAd.OnAdShown += HandleRewardedAdShown;
rewardedAd.OnAdFailedToShow += HandleRewardedAdFailedToShow;
rewardedAd.OnAdDismissed += HandleRewardedAdDismissed;
rewardedAd.OnAdImpression += HandleImpression;
rewardedAd.OnRewarded += HandleRewarded;

Межстраничная реклама

Был изменен подход к созданию и загрузке рекламы. Теперь есть объект-загрузчик InterstitialAdLoader, который занимается загрузкой рекламных объявлений, и объект рекламы Interstitial, получаемый из события загрузки рекламного объявления OnAdLoaded.

Подробнее ознакомиться с новым апи можно в справочнике SDK.

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

SDK 5

Один объект на загрузку и показ рекламного объявления:

private Interstitial interstitial;

private void RequestInterstitial()
{
    string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
    interstitial = new Interstitial(adUnitId);

    AdRequest request = new AdRequest.Builder().Build();
    interstitial.LoadAd(request);
}

SDK 6

Загрузчик InterstitialAdLoader для загрузки нескольких рекламных объявлений.

private void SetupLoader()
{
  interstitialAdLoader = new InterstitialAdLoader();
  interstitialAdLoader.OnAdLoaded += HandleInterstitialLoaded;
  interstitialAdLoader.OnAdFailedToLoad += HandleInterstitialFailedToLoad;
}

private void RequestInterstitial()
{
    string adUnitId = "demo-interstitial-yandex"; // замените на "R-M-XXXXXX-Y"
    AdRequestConfiguration adRequestConfiguration = new AdRequestConfiguration.Builder(adUnitId).Build();
    interstitialAdLoader.LoadAd(adRequestConfiguration);
}

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

SDK 5

Перед показом нужно проверить, загружена ли реклама.

private void ShowInterstitial()
{
    if (interstitial != null && interstitial.IsLoaded())
    {
        interstitial.Show();
    }
}

SDK 6

Проверка, загружена ли реклама, не требуется.

private void ShowInterstitial()
{
    if (interstitial != null)
    {
        interstitial.Show();
    }
}

Подписка на события жизненного цикла рекламы

SDK 5

Все события приходят в едином объекте Interstitial.

interstitial.OnInterstitialLoaded += HandleInterstitialLoaded;
interstitial.OnInterstitialFailedToLoad += HandleInterstitialFailedToLoad;
interstitial.OnReturnedToApplication += HandleReturnedToApplication;
interstitial.OnLeftApplication += HandleLeftApplication;
interstitial.OnAdClicked += HandleAdClicked;
interstitial.OnInterstitialShown += HandleInterstitialShown;
interstitial.OnInterstitialFailedToShow += HandleInterstitialFailedToShow;
interstitial.OnInterstitialDismissed += HandleInterstitialDismissed;
interstitial.OnImpression += HandleImpression;

SDK 6

Cобытия загрузки рекламы приходят в объекте InterstitialAdLoader, а события показа в объекте Interstitial. Унифицированы названия событий. Удалены события OnLeftApplication и OnReturnedToApplication.

interstitialAdLoader.OnAdLoaded += HandleInterstitialLoaded;
interstitialAdLoader.OnAdFailedToLoad += HandleInterstitialFailedToLoad;
// ...
interstitial.OnAdClicked += HandleAdClicked;
interstitial.OnAdShown += HandleInterstitialShown;
interstitial.OnAdFailedToShow += HandleInterstitialFailedToShow;
interstitial.OnAdDismissed += HandleInterstitialDismissed;
interstitial.OnAdImpression += HandleImpression;

App Open Ad

Добавлен новый формат рекламных объявлений — App Open Ad. Подробнее о нем можно узнать в разделе Реклама при открытии приложения.

Медиация Яндекса

Важно

Обязательно обновите версии используемых адаптеров на актуальные (Медиация Яндекса и адаптеры для сторонних медиационных сетей). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

Пакет mobileads-admob-mediation-2.9.0.unitypackage был переименован в mobileads-google-mediation-6.0.0.unitypackage.

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

Полные примеры интерации можно посмотреть здесь: