通用变更
MobileAds 类已重命名为 YandexAds。
以下属性和方法已重命名:
|
SDK 7
|
SDK 8
|
|
MobileAds.setLocationConsent(bool)
|
YandexAds.setLocationTracking(bool)
|
|
MobileAds.setAgeRestrictedUser(bool)
|
YandexAds.setAgeRestricted(bool)
|
广告请求
已移除 AdRequestConfiguration 类。请改用包含 adUnitId 的 AdRequest。
定向字段(age、contextQuery、contextTags、gender、location)已从 AdRequest 移至新的 AdTargeting 类。
|
广告请求
|
SDK 7
final adRequestConfiguration = AdRequestConfiguration(
adUnitId: 'your-ad-unit-id',
age: 25,
contextQuery: 'query',
parameters: {'key': 'value'},
);
await adLoader.loadAd(
adRequestConfiguration: adRequestConfiguration,
);
SDK 8
final adRequest = AdRequest(
adUnitId: 'your-ad-unit-id',
targeting: AdTargeting(
age: 25,
contextQuery: 'query',
),
parameters: {'key': 'value'},
);
final ad = await adLoader.loadAd(adRequest: adRequest);
|
全屏广告(插屏、激励、开屏)
创建和加载全屏广告的方式已更改。加载器构造函数现为同步,loadAd 以 Future 直接返回已加载的广告。
已移除 InterstitialAdLoadListener、RewardedAdLoadListener 和 AppOpenAdLoadListener 类。
|
广告加载
|
SDK 7
使用回调的异步创建:
late final Future<InterstitialAdLoader> _adLoader =
_createInterstitialAdLoader();
InterstitialAd? _ad;
Future<InterstitialAdLoader> _createInterstitialAdLoader() {
return InterstitialAdLoader.create(
onAdLoaded: (InterstitialAd interstitialAd) {
_ad = interstitialAd;
},
onAdFailedToLoad: (error) {
},
);
}
Future<void> _loadInterstitialAd() async {
final adLoader = await _adLoader;
await adLoader.loadAd(adRequestConfiguration: AdRequestConfiguration(adUnitId: 'your-ad-unit-id'));
}
SDK 8
同步创建,loadAd 返回已加载的广告或抛出 AdRequestError:
final _adLoader = InterstitialAdLoader();
InterstitialAd? _ad;
Future<void> _loadInterstitialAd() async {
try {
_ad = await _adLoader.loadAd(
adRequest: AdRequest(adUnitId: 'your-ad-unit-id'),
);
} on AdRequestError catch (error) {
}
}
|
RewardedAdLoader 与 AppOpenAdLoader 适用相同变更。
横幅
创建和加载横幅广告的方式已更改。横幅构造函数不再接受 adRequest 或回调;现在通过 load(AdRequest) 显式加载。广告状态与事件通过流传递。
|
横幅创建与加载
|
SDK 7
BannerAd? _banner;
void _createBanner() {
_banner = BannerAd(
adSize: BannerAdSize.stickySize(width),
adRequest: AdRequest(),
onAdLoaded: () {
},
onAdFailedToLoad: (error) {
},
onAdClicked: () {},
onImpression: (data) {},
);
}
SDK 8
BannerAd? _banner;
void _createBanner() {
final banner = BannerAd(adSize: BannerAdSize.stickySize(width));
banner.loadStateStream.listen((state) {
if (state is BannerAdLoadStateLoaded) {
} else if (state is BannerAdLoadStateError) {
}
});
banner.events.listen((event) {
if (event is BannerAdClickedEvent) {
} else if (event is BannerAdImpressionEvent) {
}
});
banner.load(AdRequest(adUnitId: 'your-ad-unit-id'));
_banner = banner;
}
|
|
销毁横幅
|
SDK 7
SDK 8
await _banner?.destroy();
|
广告信息
AdInfo 类已重构。已移除 adSize 字段,新增 creatives、extraData 和 partnerText 字段。
|
SDK 7
|
SDK 8
|
|
AdInfo.adSize
|
已移除
|
|
—
|
AdInfo.creatives(List<Creative>)
|
|
—
|
AdInfo.extraData(String?)
|
|
—
|
AdInfo.partnerText(String?)
|
已移除的事件
已移除回调事件 onLeftApplication、onReturnedToApplication 和 onAdClose。