---
metadata:
  - name: generator
    content: Diplodoc Platform v5.52.0
alternate:
  - https://ads.yandex.com/helpcenter/en/dev/react-native/react-native-migration-800.md
  - https://ads.yandex.com/helpcenter/ru/dev/react-native/react-native-migration-800.md
  - https://ads.yandex.com/helpcenter/zh/dev/react-native/react-native-migration-800.md
  - href: ru/dev/react-native/react-native-migration-800.md
    type: text/markdown
    title: Markdown version
  - href: llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://ads.yandex.com/helpcenter/ru/llms.txt

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

В плагине версии 8.0.0 были удалены некоторые колбеки и API, которые стали несовместимы с новой версией нативного SDK. Это руководство поможет внести изменения в код вашего приложения.


## 1. Удаленные колбеки BannerView

Следующие пропсы компонента `BannerView` удалены и больше не поддерживаются:

| Пропс | Платформа |
|-------|-----------|
| `onLeftApplication` | iOS, Android |
| `onWillPresentScreen` | iOS |
| `onDidDismissScreen` | iOS |
| `onReturnToApplication` | Android |
| `onAdClose` | iOS, Android |

**Что нужно сделать:** удалите эти пропсы из всех мест использования `BannerView`.

#### До

```tsx
<BannerView
  adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
  size={adSize}
  onAdLoaded={() => console.log('loaded')}
  onAdClicked={() => console.log('clicked')}
  onLeftApplication={() => console.log('left app')}
  onWillPresentScreen={() => console.log('will present')}
  onDidDismissScreen={() => console.log('did dismiss')}
  onReturnToApplication={() => console.log('returned')}
  onAdClose={() => console.log('closed')}
  onAdImpression={(e) => console.log('impression', e)}
  onAdFailedToLoad={(e) => console.log('failed', e)}
/>
```

#### После

```tsx
<BannerView
  adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
  size={adSize}
  onAdLoaded={() => console.log('loaded')}
  onAdClicked={() => console.log('clicked')}
  onAdImpression={(e) => console.log('impression', e)}
  onAdFailedToLoad={(e) => console.log('failed', e)}
/>
```

## 2. Замена AdRequestConfiguration на AdRequest

Класс `AdRequestConfiguration` удален. Теперь параметры запроса, включая `adUnitId`, передаются напрямую в метод `loadAd` в виде объекта `AdRequestParams`.

**Что нужно сделать:**
- удалите импорт и создание `AdRequestConfiguration`;
- передайте `adUnitId` вместе с остальными параметрами напрямую в `loadAd`.

#### До

```tsx
import { InterstitialAdLoader, AdRequestConfiguration, Gender } from '@yandex-ads/react-native-yandex-ads';

const loader = await InterstitialAdLoader.create();
const config = new AdRequestConfiguration({
  adUnitId: 'R-M-XXXXX-YY',
  age: '25',
  gender: Gender.Male,
});
const ad = await loader.loadAd(config);
```

#### После

```tsx
import { InterstitialAdLoader, Gender } from '@yandex-ads/react-native-yandex-ads';

const loader = await InterstitialAdLoader.create();
const ad = await loader.loadAd({
  adUnitId: 'R-M-XXXXX-YY',
  targeting: {
    age: '25',
    gender: Gender.Male,
  },
});
```

Эти изменения применимы к `RewardedAdLoader` и `AppOpenAdLoader`.

## 3. Перенос adUnitId из пропсов BannerView в adRequest

Пропс `adUnitId` удален из `BannerView`. Теперь идентификатор рекламного блока передается как обязательное поле объекта `adRequest`.

**Что нужно сделать:** уберите пропс `adUnitId` у `BannerView` и перенесите его в `adRequest.adUnitId`.

#### До

```tsx
<BannerView
  adUnitId="R-M-XXXXX-YY"
  size={adSize}
/>
```

#### После

```tsx
<BannerView
  size={adSize}
  adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
/>
```

## 4. Перенос таргетинга в объект targeting

Поля `age`, `gender`, `location`, `contextQuery`, `contextTags` перенесены во вложенный объект `targeting`. Это касается как fullscreen-форматов, так и `BannerView`.

**Что нужно сделать:** оберните поля таргетинга в `targeting: { ... }`.

### Fullscreen-реклама (Interstitial, Rewarded, AppOpen)

#### До

```ts
loader.loadAd({
  adUnitId: 'R-M-XXXXX-YY',
  age: '25',
  gender: Gender.Male,
  contextTags: ['sport', 'news'],
});
```

#### После

```tsx
loader.loadAd({
  adUnitId: 'R-M-XXXXX-YY',
  targeting: {
    age: '25',
    gender: Gender.Male,
    contextTags: ['sport', 'news'],
  },
});
```

### BannerView

#### До

```tsx
import { Gender } from '@yandex-ads/react-native-yandex-ads';

<BannerView
  adUnitId="R-M-XXXXX-YY"
  size={adSize}
  adRequest={{ age: '25', gender: Gender.Male }}
/>
```

#### После

```tsx
import { Gender } from '@yandex-ads/react-native-yandex-ads';

<BannerView
  size={adSize}
  adRequest={{ adUnitId: 'R-M-XXXXX-YY', targeting: { age: '25', gender: Gender.Male } }}
/>
```

## 5. Новый интерфейс AdInfo

В версии 8.0.0 добавлен интерфейс `AdInfo`, содержащий метаданные о загруженной рекламе.

```ts
interface AdInfo {
  adUnitId: string;
  extraData?: string;
  partnerText?: string;
  creatives: Creative[];
}

interface Creative {
  creativeId?: string;
  campaignId?: string;
  placeId?: string;
  offerId?: string;
}
```

### Получение AdInfo для fullscreen-форматов

Объект `InterstitialAd`, `RewardedAd` и `AppOpenAd` теперь содержат геттер `adInfo`:

```ts
const ad = await loader.loadAd({ adUnitId: 'R-M-XXXXX-YY' });
console.log(ad.adInfo?.adUnitId);
console.log(ad.adInfo?.creatives);
```

### Получение AdInfo в BannerView

Колбек `onAdLoaded` теперь принимает событие с полем `adInfo`:

```tsx
<BannerView
  size={adSize}
  adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
  onAdLoaded={(event) => {
    const adInfo = event.nativeEvent.adInfo;
    console.log(adInfo?.adUnitId);
  }}
/>
```

## 6. Требования к версиям

### iOS

- **Xcode**: 16.4 и выше.
- **AppMetricaCore**: 6.0.0 и выше.
- **AppMetricaLibraryAdapter**: 6.0.0 и выше.
- **AppMetricaAdSupport**: 6.0.0 и выше.
- **AppMetricaIDSync**: 6.0.0 и выше.

### Android

- **Gradle**: 7.0 и выше.
- **Android gradle plugin**: 8.3.2 и выше.
- **Android SDK**: 21 (Android 5.0) и выше.
- **Kotlin**: 1.9.0 и выше.
- **Java**: 8 и выше.

