버전 8 마이그레이션 가이드
플러그인 8.0.0에서는 새 네이티브 SDK와 호환되지 않는 일부 콜백과 API가 제거되었습니다. 이 문서는 필요한 코드 변경 사항을 정리합니다.
1. 제거된 BannerView 콜백
다음 BannerView props는 제거되어 더 이상 지원되지 않습니다.
| Prop | 플랫폼 |
|---|---|
onLeftApplication |
iOS, Android |
onWillPresentScreen |
iOS |
onDidDismissScreen |
iOS |
onReturnToApplication |
Android |
onAdClose |
iOS, Android |
조치: BannerView를 사용하는 모든 위치에서 해당 props를 제거하세요.
이전
<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를 포함한 요청 매개변수는 AdRequestParams 형태로 loadAd에 직접 전달합니다.
조치:
AdRequestConfigurationimport 및 생성 코드를 제거합니다.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. BannerView props의 adUnitId를 adRequest로 이동
BannerView에서 adUnitId prop이 제거되었습니다. 광고 단위 ID는 이제 adRequest의 필수 필드입니다.
조치: adUnitId prop을 제거하고 adRequest.adUnitId로 옮깁니다.
이전
<BannerView
adUnitId="R-M-XXXXX-YY"
size={adSize}
/>
이후
<BannerView
size={adSize}
adRequest={{ adUnitId: 'R-M-XXXXX-YY' }}
/>
4. 타겟팅 필드를 targeting 객체로 이동
전체 화면 형식과 BannerView에서 age, gender, location, contextQuery, contextTags는 targeting 아래에 중첩됩니다.
조치: 해당 필드를 targeting: { ... }로 감싸세요.
전체 화면(전면, 보상형, 앱 실행)
이전
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
InterstitialAd, RewardedAd, AppOpenAd는 adInfo getter를 제공합니다.
const ad = await loader.loadAd({ adUnitId: 'R-M-XXXXX-YY' });
console.log(ad.adInfo?.adUnitId);
console.log(ad.adInfo?.creatives);
BannerView의 AdInfo
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: API 21(Android 5.0) 이상.
- Kotlin: 1.9.0 이상.
- Java: 8 이상.