---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/unity/release/8-0-0-migration.md
  - https://ads.yandex.com/helpcenter/ru/dev/unity/release/8-0-0-migration.md
  - https://ads.yandex.com/helpcenter/zh/dev/unity/release/8-0-0-migration.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/ru/llms.txt

<!--
Используется в Boost: boost/ru/ad-monetization/dev/unity
-->

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

Версия 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 ||
||
```csharp
// 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());
``` 
|
```csharp
// 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 ||
||
```csharp
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();
```
|
```csharp
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 ||
||
```csharp
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"));
```
|
```csharp
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#

```csharp
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 ||
||
```csharp
BannerAdSize sticky = BannerAdSize.StickySize(320);
Banner banner = new Banner(
    "R-M-XXXXX-YY",
    sticky,
    AdPosition.BottomCenter);
banner.LoadAd(new AdRequest.Builder().Build());
```
|
```csharp
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 ||
||
```csharp
MobileAds.SetUserConsent(true);
MobileAds.SetLocationTracking(true);
MobileAds.SetAgeRestricted(false);
```
|
```csharp
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 ||
||
```csharp
string adUnitId = adInfo.AdUnitId;
AdSize adSize = adInfo.AdSize;
```
|
```csharp
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#

```csharp
// SDK 8: GetInfo() доступен для всех типов рекламы
AdInfo adInfo = banner.GetInfo();
if (adInfo != null)
{
    Debug.Log($"AdUnitId: {adInfo.AdUnitId}");
}
```
