Руководство по миграции на версию 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 и выше.