横幅广告SDK的导入:
import 'package:anythink_sdk/at_index.dart';
使用以下代码加载Banner广告
_loadBannerAd() async {
await ATBannerManager
.loadBannerAd(placementID: 'you placementId', extraMap: {
ATCommon.getAdSizeKey():
// 该高度是根据横幅宽高比为320:50来计算,如果是其他宽高比请按实际来计算。
ATBannerManager.createLoadbannerAdSize(width, width * (50 / 320)),
});
}
ATBannerManager.createLoadbannerAdSize(width,height)函数说明:
width:Banner展示区域的宽度
height:Banner展示区域的高度
注意:加载Banner广告时必须传入该参数设置,否则会出现Banner不能达到预期展示效果。
Admob自适应banner:
// 针对Admob平台,支持Admob banner广告自适应
//ATBannerManager.adaptiveOrientationCurrent() 自适应
//ATBannerManager.adaptiveOrientationPortrait() 竖屏
//ATBannerManager.adaptiveOrientationLandscape() 横屏
_loadBannerAd() async {
await ATBannerManager
.loadBannerAd(placementID: 'you placementId', extraMap: {
ATCommon.getAdSizeKey():
ATBannerManager.createLoadbannerAdSize(width, width * (50 / 320)),
ATBannerManager.getAdaptiveWidthKey(): width,
ATBannerManager.getAdaptiveOrientationKey(): ATBannerManager.adaptiveOrientationCurrent(),
});
}
使用以下代码判断是否有广告缓存:
_hasBannerAdReady() async {
await ATBannerManager
.bannerAdReady(
placementID: 'b5bacad80a0fb1',
)
.then((value) {
print('flutter横幅广告视频缓存$value');
});
}
使用以下代码获取广告状态(返回值类型为Map) key-value如下:
1、isLoading:是否正在加载
2、isReady:是否有广告缓存
3、adInfo:当前优先级最高的广告缓存信息
_checkBannerAdStatus() async {
await ATBannerManager
.checkBannerLoadStatus(
placementID: 'b5bacad80a0fb1',
).then((value) {
print('flutter横幅广告广告视频状态$value');
});
}
获取当前广告位下所有可用广告的信息
getBannerValidAds() async {
await ATBannerManager
.getBannerValidAds(
placementID: Configuration.bannerPlacementID,
).then((value) {
print('flutter横幅广告广告视频状态$value');
});
}
横幅广告实现方式为platformView时,只需要在广告加载成功后,初始化PlatformBannerWidget这个组件即可使用,需要注意的是,使用该方式展示的横幅广告,无法使用以下方法。
注意:建议做好Banner视图状态控制,避免Flutter频繁刷新界面时,Banner 广告出现的空白情况。
// 隐藏横幅广告
ATBannerManager.hideBannerAd(placementID:'xxx')
// 移除横幅广告
ATBannerManager.removeBannerAd(placementID:'xxx')
// 显示横幅广告
ATBannerManager.afreshShowBannerAd(placementID:'xxx')
PlatformBannerWidget属性说明:
placementID: 广告ID
sceneID: 场景ID(可选参数)
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("native text"),
),
body: SafeArea(
child: Container(
height: 200,
color: Colors.black,
child: PlatformBannerWidget(
Configuration.bannerPlacementID,
),
)
),
);
}
}
这种方式是渲染视图进行布局展示到界面上,我们提供了几种API使用
// 使用坐标进行展示
ATBannerManager.showBannerInRectangle(placementID:'xx',extraMap:{});
// 使用坐标进行展示,并区分场景
ATBannerManager.showSceneBannerInRectangle(placementID:'xx',sceneID:'xxx',extraMap:{})
// 使用固定位置进行展示,提供了固定底部(getAdATBannerAdShowingPositionBottom)和固定顶部(getAdATBannerAdShowingPositionTop)
ATBannerManager.showAdInPosition(placementID:'xx',position:ATCommon.getAdATBannerAdShowingPositionBottom());
// 使用固定位置进行展示,带场景id,提供了固定底部(getAdATBannerAdShowingPositionBottom)和固定顶部(getAdATBannerAdShowingPositionTop)
ATBannerManager.showSceneBannerAdInPosition(placementID:'xx',sceneID:'xx',position:ATCommon.getAdATBannerAdShowingPositionBottom());
可以使用以下方式管理视图
// 隐藏横幅广告
ATBannerManager.hideBannerAd(placementID:'xxx')
// 移除横幅广告
ATBannerManager.removeBannerAd(placementID:'xxx')
// 显示横幅广告
ATBannerManager.afreshShowBannerAd(placementID:'xxx')
ATBannerResponse属性介绍:
BannerStatus: 横幅广告状态
placementID: placementID
requestMessage: 请求信息(错误信息)
extraMap: 回调信息
isDeeplinkSuccess: isDeeplinkSuccess
要获得有关各种Banner广告事件(加载成功/失败,展示和点击)的通知,示例代码如下:
_bannerListen() {
ATListenerManager.bannerEventHandler.listen((value) {
switch (value.bannerStatus) {
//广告加载失败
case BannerStatus.bannerAdFailToLoadAD:
print("flutter bannerAdFailToLoadAD ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
break;
//广告加载成功
case BannerStatus.bannerAdDidFinishLoading:
print("flutter bannerAdDidFinishLoading ---- placementID: ${value.placementID}");
break;
//广告自动刷新成功
case BannerStatus.bannerAdAutoRefreshSucceed:
print("flutter bannerAdAutoRefreshSucceed ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
//广告被点击
case BannerStatus.bannerAdDidClick:
print("flutter bannerAdDidClick ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
//Deeplink
case BannerStatus.bannerAdDidDeepLink:
print("flutter bannerAdDidDeepLink ---- placementID: ${value.placementID} ---- extra:${value.extraMap} ---- isDeeplinkSuccess:${value.isDeeplinkSuccess}");
break;
//广告展示成功
case BannerStatus.bannerAdDidShowSucceed:
print("flutter bannerAdDidShowSucceed ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
//广告关闭按钮被点击
case BannerStatus.bannerAdTapCloseButton:
print("flutter bannerAdTapCloseButton ---- placementID: ${value.placementID} ---- extra:${value.extraMap}");
break;
//广告自动刷新失败
case BannerStatus.bannerAdAutoRefreshFail:
print("flutter bannerAdAutoRefreshFail ---- placementID: ${value.placementID} ---- errStr:${value.requestMessage}");
break;
case BannerStatus.bannerAdUnknown:
print("flutter bannerAdUnknown");
break;
}
});
}