一般变更
已将 MobileAds 类重命名为 YandexAds。
重命名了以下属性和方法:
|
SDK 7
|
SDK 8
|
|
MobileAds.setLocationConsent(bool)
|
YandexAds.setLocationTracking(bool)
|
|
MobileAds.setAgeRestrictedUser(bool)
|
YandexAds.setAgeRestricted(bool)
|
广告请求
移除了 AdRequestConfiguration 类。 改用 AdRequest,它现在提供 adUnitId。
定位字段(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 回调事件。