迁移至版本 8 的指南

插件版本 8.0.0 移除了与新原生 SDK 不兼容的部分回调和 API。 本指南列出了您需要的代码更改。

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)作为 AdRequestParams 直接传递到 loadAd

需要执行的操作:

  • 移除对 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,
  },
});

同样适用于 RewardedAdLoaderAppOpenAdLoader

3. 将 adUnitIdBannerView 属性移至 adRequest

adUnitId 属性已从 BannerView 中移除。 广告单元 ID 现在是 adRequest 内的必填字段。

需要执行的操作: 移除 adUnitId 属性,并设置 adRequest.adUnitId

之前

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

之后

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

4. 将定位移至定位对象

agegenderlocationcontextQuerycontextTags 嵌套在 targeting(针对全屏格式)和 BannerView 下。

需要执行的操作: 将这些字段包装在 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(针对全屏格式)

InterstitialAdRewardedAdAppOpenAd 提供 adInfo 取值属性:

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:16.4 或更高版本。
  • AppMetricaCore:6.0.0 或更高版本。
  • AppMetricaLibraryAdapter:6.0.0 或更高版本。
  • AppMetricaAdSupport:6.0.0 或更高版本。
  • AppMetricaIDSync:6.0.0 或更高版本。

Android

  • Gradle:7.0 或更高版本。
  • Android Gradle 插件:8.3.2 或更高版本。
  • Android SDK:API 21 (Android 5.0) 或更高版本。
  • Kotlin:1.9.0 或更高版本。
  • Java:8 或更高版本。
上一篇
下一篇