Руководство по миграции на версию 8.0.0 (beta)

Версия 8.0.0 Unity Plugin для Yandex Mobile Ads SDK вносит ряд изменений в API, направленных на улучшение пользовательского опыта разработчиков.

Основные изменения

1. Изменения в AdRequest

Классы AdRequestConfiguration и AdRequest.Builder удалены. adUnitId стал обязательным параметром конструктора AdRequest. Теперь именно AdRequest используется для загрузчиков Interstitial, Rewarded и AppOpen вместо AdRequestConfiguration.

Класс Статус
AdRequestConfiguration Удален. Используйте AdRequest
AdRequest.Builder Удален. Используйте конструктор AdRequest
Примеры
C#

SDK 7

SDK 8

// Interstitial / Rewarded / AppOpen
AdRequestConfiguration config =
    new AdRequestConfiguration.Builder("R-M-XXXXX-YY")
        .Build();
interstitialAdLoader.LoadAd(config);

// Banner
Banner banner = new Banner(
    "R-M-XXXXX-YY",
    BannerAdSize.StickySize(320),
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest.Builder().Build());
// Interstitial / Rewarded / AppOpen
AdRequest request = new AdRequest("R-M-XXXXX-YY");
interstitialAdLoader.LoadAd(request);

// Banner
Banner banner = new Banner(
    BannerAdSize.Sticky(320),
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest("R-M-XXXXX-YY"));

2. Изменения в Targeting

Поля таргетинга (Age, Gender, Location, ContextQuery, ContextTags) удалены из AdRequestConfiguration.Builder и AdRequest.Builder. Для управления параметрами таргетинга используйте новый класс AdTargeting.

Класс Свойство Статус
AdRequestConfiguration.Builder WithAge Удалено. Используйте AdTargeting(age:)
AdRequestConfiguration.Builder WithGender Удалено. Используйте AdTargeting(gender:)
AdRequestConfiguration.Builder WithLocation Удалено. Используйте AdTargeting(location:)
AdRequestConfiguration.Builder WithContextQuery Удалено. Используйте AdTargeting(contextQuery:)
AdRequestConfiguration.Builder WithContextTags Удалено. Используйте AdTargeting(contextTags:)
AdRequest.Builder WithAge Удалено. Используйте AdTargeting(age:)
AdRequest.Builder WithGender Удалено. Используйте AdTargeting(gender:)
AdRequest.Builder WithLocation Удалено. Используйте AdTargeting(location:)
AdRequest.Builder WithContextQuery Удалено. Используйте AdTargeting(contextQuery:)
AdRequest.Builder WithContextTags Удалено. Используйте AdTargeting(contextTags:)
AdTargeting Добавлен
Примеры
C#

SDK 7

SDK 8

AdRequestConfiguration config =
    new AdRequestConfiguration.Builder("R-M-XXXXX-YY")
        .WithAge("25")
        .WithGender(Gender.MALE)
        .WithLocation(location)
        .WithContextQuery("coffee")
        .WithContextTags(new List<string> { "food", "drinks" })
        .WithParameters(parameters)
        .Build();
AdTargeting targeting = new AdTargeting(
    age: "25",
    gender: Gender.MALE,
    location: location,
    contextQuery: "coffee",
    contextTags: new List<string> { "food", "drinks" });

AdRequest request = new AdRequest(
    "R-M-XXXXX-YY",
    targeting: targeting,
    parameters: parameters);

3. Изменения в загрузчиках рекламы

События OnAdLoaded и OnAdFailedToLoad удалены из RewardedAdLoader, InterstitialAdLoader и AppOpenAdLoader. Результат загрузки теперь возвращается через callback-параметры метода LoadAd.

Класс Загрузчик Статус
AppOpenAdLoader LoadAd(request) + OnAdLoaded, OnAdFailedToLoad Заменен на LoadAd(request, onLoaded, onFailed)
InterstitialAdLoader LoadAd(request) + OnAdLoaded, OnAdFailedToLoad Заменен на LoadAd(request, onLoaded, onFailed)
RewardedAdLoader LoadAd(request) + OnAdLoaded, OnAdFailedToLoad Заменен на LoadAd(request, onLoaded, onFailed)
OnAdLoaded Удалено
OnAdFailedToLoad Удалено
Примеры
C#

SDK 7

SDK 8

var loader = new RewardedAdLoader();
loader.OnAdLoaded += (sender, args) => {
    _rewardedAd = args.RewardedAd;
};
loader.OnAdFailedToLoad += (sender, args) => {
    Debug.Log(args.Message);
};
loader.LoadAd(new AdRequest("R-M-XXXXX-YY"));
var loader = new RewardedAdLoader();
loader.LoadAd(
    adRequest: new AdRequest("R-M-XXXXX-YY"),
    onLoaded: ad => { _rewardedAd = ad; },
    onFailed: args => { Debug.Log(args.Message); });

Тот же паттерн применяется к InterstitialAdLoader (возвращает Interstitial) и AppOpenAdLoader (возвращает AppOpenAd).

3.1 Поддержка async/await

Добавлена поддержка async/await во всех загрузчиках рекламы. При ошибке загрузки возникает AdLoadingException.

Загрузчик Метод Статус
AppOpenAdLoader LoadAd(request) Добавлен
InterstitialAdLoader LoadAd(request) Добавлен
RewardedAdLoader LoadAd(request) Добавлен
Примеры
C#
var loader = new RewardedAdLoader();
try
{
    _rewardedAd = await loader.LoadAd(new AdRequest("R-M-XXXXX-YY"));
}
catch (AdLoadingException e)
{
    Debug.Log(e.Message);
}

4. Изменения в Banner API

Параметр blockId удален из конструктора Banner. Теперь идентификатор рекламного блока передается через AdRequest при каждой загрузке. Фабричные методы BannerAdSize переименованы — суффикс Size удален.

Класс SDK 7 SDK 8 Статус
Banner Banner(blockId, adSize, position) Banner(adSize, position) Изменен
Banner LoadAd(new AdRequest.Builder().Build()) LoadAd(new AdRequest(blockId)) Изменен
BannerAdSize FixedSize(width, height) Fixed(width, height) Переименован
BannerAdSize StickySize(width) Sticky(width) Переименован
BannerAdSize InlineSize(width, maxHeight) Inline(width, maxHeight) Переименован
Примеры
C#

SDK 7

SDK 8

BannerAdSize sticky = BannerAdSize.StickySize(320);
Banner banner = new Banner(
    "R-M-XXXXX-YY",
    sticky,
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest.Builder().Build());
BannerAdSize sticky = BannerAdSize.Sticky(320);
Banner banner = new Banner(
    sticky,
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest("R-M-XXXXX-YY"));

5. Переименование основного класса SDK

Класс MobileAds переименован в YandexAds.

SDK 7 SDK 8 Статус
MobileAds YandexAds Переименован
MobileAds.SetUserConsent(consent) YandexAds.SetUserConsent(consent) Переименован
MobileAds.SetLocationTracking(enabled) YandexAds.SetLocationTracking(enabled) Переименован
MobileAds.SetAgeRestricted(restricted) YandexAds.SetAgeRestricted(restricted) Переименован
MobileAds.ShowDebugPanel() YandexAds.ShowDebugPanel() Переименован
Примеры
C#

SDK 7

SDK 8

MobileAds.SetUserConsent(true);
MobileAds.SetLocationTracking(true);
MobileAds.SetAgeRestricted(false);
YandexAds.SetUserConsent(true);
YandexAds.SetLocationTracking(true);
YandexAds.SetAgeRestricted(false);

6. Изменения в AdInfo

Свойство AdSize удалено из AdInfo. Добавлены новые свойства: ExtraData, PartnerText, Creatives.

Класс SDK 7 SDK 8 Статус
AdInfo AdUnitId AdUnitId Без изменений
AdInfo AdSize Удалено
AdInfo ExtraData Добавлено
AdInfo PartnerText Добавлено (только для ADFOX)
AdInfo Creatives Добавлено
Примеры
C#

SDK 7

SDK 8

string adUnitId = adInfo.AdUnitId;
AdSize adSize = adInfo.AdSize;
string adUnitId = adInfo.AdUnitId;
string extraData = adInfo.ExtraData;
string partnerText = adInfo.PartnerText; // только для ADFOX

if (adInfo.Creatives != null)
{
    foreach (Creative creative in adInfo.Creatives)
    {
        string creativeId = creative.CreativeId;
        string campaignId = creative.CampaignId;
        string placeId    = creative.PlaceId;
    }
}

7. Расширение GetInfo()

Метод GetInfo() теперь доступен для всех типов рекламы, включая AppOpenAd и Banner.

Тип рекламы SDK 7 SDK 8 Статус
Interstitial.GetInfo() Без изменений
RewardedAd.GetInfo() Без изменений
AppOpenAd.GetInfo() Добавлен
Banner.GetInfo() Добавлен
Примеры
C#
// SDK 8: GetInfo() доступен для всех типов рекламы
AdInfo adInfo = banner.GetInfo();
if (adInfo != null)
{
    Debug.Log($"AdUnitId: {adInfo.AdUnitId}");
}