---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/flutter7/release/6-0-0-migration.md
  - https://ads.yandex.com/helpcenter/ru/dev/flutter7/release/6-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/flutter
-->

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

{% note warning %}

Обязательно обновите версии используемых адаптеров на актуальные ([Медиация Яндекса](https://ads.yandex.com/helpcenter/ru/dev/flutter7/list-network.md)). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

{% endnote %}

## Баннеры

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

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

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

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

{% note warning %}

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

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

{% endnote %}

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

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

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

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

#|
||
Загрузка рекламы
| **SDK 5**

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

```dart
final ad = await RewardedAd.create(
  adUnitId: 'your-ad-unit-id',
  onAdLoaded: () {
    /* Do something */
  },
  onAdFailedToLoad: (error) {
      /* Do something */
  },
);
await ad.load(adRequest: AdRequest());
```

**SDK 6**

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

```dart
late final Future<RewardedAdLoader> _adLoader =
      _createRewardedAdLoader();
RewardedAd? _ad;

Future<RewardedAdLoader> _createRewardedAdLoader() {
  return RewardedAdLoader.create(
    onAdLoaded: (RewardedAd rewardedAd) {
      // The ad was loaded successfully. Now you can show loaded ad
      _ad = rewardedAd;
    },
    onAdFailedToLoad: (error) {
      // Ad failed to load with AdRequestError.
      // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
    },
  );
}

Future<void> _loadRewardedAd() async {
  final adLoader = await _adLoader;
  await adLoader.loadAd(adRequestConfiguration: AdRequestConfiguration(adUnitId: 'your-ad-unit-id'));
}
```

||
||
Показ рекламы
| **SDK 5**

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

```dart
RewardedAd? _ad;

Future<void> _showRewardedAd() async {
  final ad = _ad;
  if (ad != null && ad.isLoaded) {
    await ad.show();
    var reward = await ad.waitForDismiss();
  }
}
```

**SDK 6**

Проверка, загружена ли реклама, не требуется. Рекламное объявление готово к показу после получения его в методе обратного вызова `onAdLoaded()`.

```dart
RewardedAd? _ad;

Future<void> _showRewardedAd() async {
  final ad = _ad;
  if (ad != null) {
    _setAdEventListener(ad);
    await ad.show();
    var reward = await ad.waitForDismiss();
  }
}
```

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

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

```dart
RewardedAd.create(
  onAdLoaded: () {},
  onAdFailedToLoad: (AdLoadError error) {},
  onAdShown: () {},
  onAdDismissed: () {},
  onRewarded: (Reward reward) {},
  onAdClicked: () {},
  onLeftApplication: () {},
  onReturnedToApplication: () {},
  onImpression: (String? impressionData) {},
);
```

**SDK 6**

Cобытия загрузки рекламы приходят в объекте `RewardedAdLoader`, а события показа — в объекте `RewardedAdEventListener`.

Объект `RewardedAdEventListener` устанавливается через метод `rewardedAd.setAdEventListener`.

Унифицированы названия событий. Удалены события `onLeftApplication` и `onReturnedToApplication`.

Добавлено событие `onAdFailedToShow`.

Переименовано событие `onImpression` в `onAdImpression`.

```dart
RewardedAdLoader.create(
  onAdLoaded: (RewardedAd rewardedAd) {},
  onAdFailedToLoad: (error) {},
);

void _setAdEventListener(RewardedAd ad) {
  ad.setAdEventListener(
      eventListener: RewardedAdEventListener(
          onAdShown: () {},
          onAdFailedToShow: (AdError error) {},
          onAdDismissed: () {},
          onAdClicked: () {},
          onAdImpression: (ImpressionData? data) {},
          onRewarded: (Reward reward) {}
      )
  );
}
```

||
|#

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

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

#|
||
Загрузка рекламы
| **SDK 5**

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

```dart
final ad = await InterstitialAd.create(
  adUnitId: 'your-ad-unit-id',
  onAdLoaded: () {
    /* Do something */
  },
  onAdFailedToLoad: (error) {
      /* Do something */
  },
);
await ad.load(adRequest: AdRequest());
```

**SDK 6**

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

```dart
late final Future<InterstitialAdLoader> _adLoader =
      _createInterstitialAdLoader();
InterstitialAd? _ad;

Future<InterstitialAdLoader> _createInterstitialAdLoader() {
  return InterstitialAdLoader.create(
    onAdLoaded: (InterstitialAd interstitialAd) {
      // The ad was loaded successfully. Now you can show loaded ad
      _ad = interstitialAd;
    },
    onAdFailedToLoad: (error) {
      // Ad failed to load with AdRequestError.
      // Attempting to load a new ad from the onAdFailedToLoad() method is strongly discouraged.
    },
  );
}

Future<void> _loadInterstitialAd() async {
  final adLoader = await _adLoader;
  await adLoader.loadAd(adRequestConfiguration: AdRequestConfiguration(adUnitId: 'your-ad-unit-id'));
}
```

||
||
Показ рекламы
| **SDK 5**

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

```dart
InterstitialAd? _ad;

Future<void> _showInterstitialAd() async {
  final ad = _ad;
  if (ad != null && ad.isLoaded) {
    await ad.show();
    await ad.waitForDismiss();
  }
}
```

**SDK 6**

Проверка, загружена ли реклама, не требуется. Рекламное объявление готово к показу после получения его в методе обратного вызова `onAdLoaded()`.

```dart
InterstitialAd? _ad;

Future<void> _showInterstitialAd() async {
  final ad = _ad;
  if (ad != null) {
    _setAdEventListener(ad);
    await ad.show();
    await ad.waitForDismiss();
  }
}
```

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

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

```dart
InterstitialAd.create(
  onAdLoaded: () {},
  onAdFailedToLoad: (AdLoadError error) {},
  onAdShown: () {},
  onAdDismissed: () {},
  onAdClicked: () {},
  onLeftApplication: () {},
  onReturnedToApplication: () {},
  onImpression: (String? impressionData) {},
);
```

**SDK 6**

Cобытия загрузки рекламы приходят в объекте `InterstitialAdLoader`, а события показа в объекте `InterstitialAdEventListener`.

Объект `InterstitialAdEventListener` устанавливается через метод `interstitialAd.setAdEventListener`.

Унифицированы названия событий. Удалены события `onLeftApplication` и `onReturnedToApplication`.

Добавлено событие `onAdFailedToShow`.

Переименовано событие `onImpression` в `onAdImpression`.

```dart
InterstitialAdLoader.create(
  onAdLoaded: (InterstitialAd interstitialAd) {},
  onAdFailedToLoad: (error) {},
);

void _setAdEventListener(InterstitialAd ad) {
  ad.setAdEventListener(
      eventListener: InterstitialAdEventListener(
          onAdShown: () {},
          onAdFailedToShow: (AdError error) {},
          onAdDismissed: () {},
          onAdClicked: () {},
          onAdImpression: (ImpressionData? data) {}
      )
  );
}
```

||
|#

## App Open Ad

Добавлен новый формат рекламных объявлений — App Open Ad. Подбробнее о нем можно узнать в разделе [Реклама при открытии приложения](https://ads.yandex.com/helpcenter/ru/dev/flutter7/app-open-ad.md).

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

* <!-- source: ru/dev/_includes7/github-pubdev-links.md -->
  Ссылка на [pub.dev](https://pub.dev/packages/yandex_mobileads/example).
  <!-- endsource: ru/dev/_includes7/github-pubdev-links.md -->

* <!-- source: ru/dev/_includes7/github-pubdev-links.md -->
  Ссылка на [github](https://github.com/yandexmobile/yandex-ads-flutter-plugin).
  <!-- endsource: ru/dev/_includes7/github-pubdev-links.md -->

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

{% note warning %}

Обязательно обновите версии используемых адаптеров на актуальные ([Медиация Яндекса](https://ads.yandex.com/helpcenter/ru/dev/flutter7/list-network.md)). Иначе возможны ошибки неправильной интеграции адаптеров и реклама не будет показана.

{% endnote %}

{% list tabs %}

- Android

  Артефакт `com.yandex.ads.mediation:mobileads-admob` был переименован в `com.yandex.ads.mediation:mobileads-google`.

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

  #|
  || **SDK 5**
  ```gradle
  implementation 'com.yandex.ads.mediation:mobileads-admob:<version>'
  ```
  | **SDK 6**
  ```gradle
  implementation 'com.yandex.ads.mediation:mobileads-google:<version>'
  ```
  ||
  |#

- iOS

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

  #|
  || **SDK 5**
  ```bash
  pod 'AdMobYandexMobileAdsAdapters'
  ```
  | **SDK 6**
  ```bash
  pod 'GoogleYandexMobileAdsAdapters'
  ```
  ||
  |#

{% endlist %}
