버전 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. AdRequestConfigurationAdRequest로 교체

AdRequestConfiguration가 제거되었습니다. adUnitId를 포함한 요청 매개변수는 AdRequestParams 형태로 loadAd에 직접 전달합니다.

조치:

  • AdRequestConfiguration import 및 생성 코드를 제거합니다.
  • 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,
  },
});

RewardedAdLoaderAppOpenAdLoader에도 동일하게 적용됩니다.

3. BannerView props의 adUnitIdadRequest로 이동

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, contextTagstargeting 아래에 중첩됩니다.

조치: 해당 필드를 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, AppOpenAdadInfo getter를 제공합니다.

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

BannerViewAdInfo

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