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

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

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

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

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

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

До

<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)}
/>

После

<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.

До

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);

После

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.

До

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

После

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

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

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

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

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

До

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

После

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

BannerView

До

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

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

После

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, содержащий метаданные о загруженной рекламе.

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:

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

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

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

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

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

iOS

  • Xcode: 26.0 и выше.
  • 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 и выше.