---
metadata:
  - name: generator
    content: Diplodoc Platform v5.57.4
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
  - href: https://ads.yandex.com/helpcenter/en/dev/flutter7/release/6-0-0-migration.md
    type: text/markdown
    title: Markdown version
  - href: https://ads.yandex.com/helpcenter/en/dev/flutter7/llms.txt
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/en/llms.txt

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

# Guide to migrating to version 6

{% note warning %}

Be sure to update to the latest adapter versions ([Yandex Mediation](https://ads.yandex.com/helpcenter/en/dev/flutter7/list-network.md)). Otherwise, errors from improper adapter integration might occur, preventing the ad from being served.

{% endnote %}

## Banners

Renamed the `AdSize` class to `BannerAdSize`. Removed the `flexibleSize(int width, int maxHeight)` method.

Use methods depending on your ad type:

To create an adaptive sticky banner, use the `BannerAdSize.stickySize(int width)` method.

> An adaptive sticky banner is a small, automatically updated ad placed at the bottom or top of the app screen.
>
> The banner doesn't overlap the main app content and is often used in gaming apps.
>
> The height of the sticky banner is determined automatically, adapting to the device screen size and not exceeding 15% of the screen height.

{% note warning %}

  Starting with version 6.0.0, adaptive sticky banners can refresh automatically.

  If you previously implemented auto-refresh for a sticky-banner, you should now disable it.

{% endnote %}

To create an adaptive inline banner, use the `BannerAdSize.inlineSize(int width, int maxHeight)` method.

> An adaptive inline banner is a flexible banner ad format that ensures maximum efficiency by optimizing ad size for each device.
>
> The banner height is selected automatically and can reach the height of the device screen.
>
> Typically, this format is used in feed-based apps or contexts where it's acceptable to primarily focus user attention on ads.

## Rewarded ads

The approach to creating and loading advertisements has been revised. We now provide the `RewardedAdLoader` loader object, which loads the ads, and the `RewardedAd` ad object retrieved from the `onAdLoaded` ad load event.

#|
||
Loading ads
| **SDK 5**

One object is now used both for loading and serving ads:

```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` is used for loading multiple ads.

```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'));
}
```

||
||
Ad serving
| **SDK 5**

Check if the ad is loaded before displaying it.

```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**

You don't need to check whether the ad has been loaded. The ad is ready for rendering after it is returned by the `onAdLoaded()` callback method.

```dart
RewardedAd? _ad;

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

||
||
Subscribing to ad lifecycle events
| **SDK 5**

All events come in a single `RewardedAd` object.

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

**SDK 6**

Ad loading events arrive in the `RewardedAdLoader` object, while ad rendering events arrive in the `RewardedAdEventListener` object.

The `RewardedAdEventListener` object is set using the `rewardedAd.setAdEventListener` method.

Unified event names. Removed the `onLeftApplication` and `onReturnedToApplication` events.

Added the `onAdFailedToShow` event.

Renamed the `onImpression` event as `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) {}
      )
  );
}
```

||
|#

## Interstitial ads

The approach to creating and loading advertisements has been revised. We now provide the `InterstitialAdLoader` loader object, which loads the ads, and the `InterstitialAd` ad object retrieved from the `onAdLoaded` ad load event.

#|
||
Loading ads
| **SDK 5**

One object is now used both for loading and serving ads:

```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` loader object for loading multiple ads.

```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'));
}
```

||
||
Ad serving
| **SDK 5**

Check if the ad is loaded before displaying it.

```dart
InterstitialAd? _ad;

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

**SDK 6**

You don't need to check whether the ad has been loaded. The ad is ready for rendering after it is returned by the `onAdLoaded()` callback method.

```dart
InterstitialAd? _ad;

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

||
||
Subscribing to ad lifecycle events
| **SDK 5**

All the events arrive in a single `InterstitialAd` object.

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

**SDK 6**

Ad loading events arrive in the `InterstitialAdLoader` object, while ad rendering events arrive in the `InterstitialAdEventListener` object.

The `InterstitialAdEventListener` object is set using the `interstitialAd.setAdEventListener` method.

Unified event names. Removed the `onLeftApplication` and `onReturnedToApplication` events.

Added the `onAdFailedToShow` event.

Renamed the `onImpression` event as `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 ads

Added a new ad format: app open ads. You can learn more about it in the [App open ad](https://ads.yandex.com/helpcenter/en/dev/flutter7/app-open-ad.md)s section.

You can view complete integration examples here:

* <!-- source: en/dev/_includes7/github-pubdev-links.md -->
  Link to [pub.dev](https://pub.dev/packages/yandex_mobileads/example).
  <!-- endsource: en/dev/_includes7/github-pubdev-links.md -->

* <!-- source: en/dev/_includes7/github-pubdev-links.md -->
  Link to [GitHub](https://github.com/yandexmobile/yandex-ads-flutter-plugin).
  <!-- endsource: en/dev/_includes7/github-pubdev-links.md -->

## Yandex Mediation

{% note warning %}

Be sure to update to the latest adapter versions ([Yandex Mediation](https://ads.yandex.com/helpcenter/en/dev/flutter7/list-network.md)). Otherwise, errors from improper adapter integration might occur, preventing the ad from being served.

{% endnote %}

{% list tabs %}

- Android

  Renamed the `com.yandex.ads.mediation:mobileads-admob` artifact as `com.yandex.ads.mediation:mobileads-google`.

  If you use a unified mediation build, you do not need to do anything. If you add adapters individually, replace the gradle dependency in your project.

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

- iOS

  We renamed the `AdMobYandexMobileAdsAdapters` adapters as `GoogleYandexMobileAdsAdapters`. If you use a unified mediation build, you do not need to do anything. If you add adapters individually, you need to edit your project's Podfile.

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

{% endlist %}
