loadBannerAd method
Future<BannerAd?>
loadBannerAd({
- AdSize size = AdSize.banner,
- Map<
String, String> ? extras, - VoidCallback? onLoadSuccess,
- dynamic onLoadFailed()?,
- VoidCallback? onAdOpened,
- VoidCallback? onAdClosed,
加载Banner广告 @throws 该方法会抛出异常,请使用try-catch捕获 @param size 广告大小,默认值为AdSize.banner @param extras 额外参数,默认值为null, 例如{"collapsible": "top"} @param onLoadSuccess 广告加载成功回调,默认值为null @param onLoadFailed 广告加载失败回调,默认值为null @param onAdOpened 广告展开回调,默认值为null @param onAdClosed 广告关闭回调,默认值为null
Implementation
Future<BannerAd?> loadBannerAd({
AdSize size = AdSize.banner,
Map<String, String>? extras,
VoidCallback? onLoadSuccess,
Function(String)? onLoadFailed,
VoidCallback? onAdOpened,
VoidCallback? onAdClosed,
}) async {
try {
if (_initializationStatus != AdapterInitializationState.ready) {
onLoadFailed?.call('广告SDK未初始化');
return null;
}
var canRequestAds = await _authorizationManager.canRequestAds();
if (!canRequestAds) {
return null;
}
if (_bannerAdUnitId.isEmpty) {
debugPrint('广告单元ID为空');
throw Exception('广告单元ID为空');
}
final adRequest = AdRequest(extras: extras);
final bannerAd = BannerAd(
adUnitId: _bannerAdUnitId,
size: size,
request: adRequest,
listener: BannerAdListener(
onAdLoaded: (ad) {
debugPrint('Banner广告加载成功');
onLoadSuccess?.call();
},
onAdFailedToLoad: (ad, error) {
debugPrint('Banner广告加载失败: ${error.message}');
ad.dispose();
onLoadFailed?.call(error.message);
},
onAdOpened: (ad) {
debugPrint('Banner广告展开');
onAdOpened?.call();
},
onAdClosed: (ad) {
debugPrint('Banner广告被关闭');
onAdClosed?.call();
},
),
);
await bannerAd.load();
return bannerAd;
} catch (e) {
debugPrint('加载Banner广告失败: $e');
return null;
}
}