💡Tips
- 推荐使用标准化回调处理流程
- 自动刷新功能 请详见-HyperBid Tools控制台-应用管理-聚合单元-高级设置
- 支持自适应横幅尺寸,可通过
getAdaptiveBannerHeightForWidth获取推荐高度
Flutter SDK 提供两种方式加载横幅广告:程序化方式和 Widget 方式。
通过 McSdk 的静态方法创建并加载横幅广告,适用于需要精确控制广告生命周期的场景。
void initializeBannerAd() {
// 设置横幅广告回调监听
McSdk.setBannerListener(McAdViewAdListener(
onAdLoadedCallback: (McAd ad) {
// 横幅加载成功回调
},
onAdLoadFailedCallback: (String adUnitId, McError error) {
// 横幅加载失败回调
},
onAdClickedCallback: (McAd ad) {
// 横幅点击回调
},
onAdExpandedCallback: (McAd ad) {
// 横幅展开回调
},
onAdCollapsedCallback: (McAd ad) {
// 横幅折叠回调
},
onAdDisplayedCallback: (McAd ad) {
// 横幅展示成功回调
},
onAdRevenuePaidCallback: (McAd ad) {
// 横幅广告收益回调
},
onAdLoadFinishedCallback: (String adUnitId) {
// 本轮加载结束回调
},
));
loadBannerAd();
}
void loadBannerAd() {
// 设置场景 ID(可选)
McSdk.setBannerPlacement("your mediation unit id", "test_scenario_id_banner");
// 设置横幅背景色(可选,仅支持十六进制颜色字符串)
McSdk.setBannerBackgroundColor("your mediation unit id", "#000000");
// 创建横幅广告并指定展示位置
McSdk.createBanner("your mediation unit id", AdViewPosition.bottomCenter);
}
💡 Tips
- 调用
createBanner后,SDK 会自动开始加载广告。- 如果开启了自动刷新,SDK 会在刷新间隔到期后自动加载下一轮广告。
- 仅当自动刷新被暂停时,才需要手动调用
McSdk.loadBanner(adUnitId)重新加载。
AdViewPosition 支持以下位置枚举:
| 枚举值 | 说明 |
|---|---|
AdViewPosition.topCenter |
顶部居中 |
AdViewPosition.topRight |
顶部靠右 |
AdViewPosition.centered |
屏幕居中 |
AdViewPosition.centerLeft |
垂直居中靠左 |
AdViewPosition.centerRight |
垂直居中靠右 |
AdViewPosition.bottomLeft |
底部靠左 |
AdViewPosition.bottomCenter |
底部居中 |
AdViewPosition.bottomRight |
底部靠右 |
使用 McAdView 组件直接嵌入 Flutter Widget 树中,适用于需要灵活布局的场景。
final McAdViewController adViewController = McAdViewController();
Widget buildBannerAd() {
return McAdView(
adUnitId: "your mediation unit id",
adFormat: AdFormat.banner,
controller: adViewController,
listener: McAdViewAdListener(
onAdLoadedCallback: (McAd ad) {
// 横幅加载成功回调
},
onAdLoadFailedCallback: (String adUnitId, McError error) {
// 横幅加载失败回调
},
onAdClickedCallback: (McAd ad) {
// 横幅点击回调
},
onAdExpandedCallback: (McAd ad) {
// 横幅展开回调
},
onAdCollapsedCallback: (McAd ad) {
// 横幅折叠回调
},
onAdDisplayedCallback: (McAd ad) {
// 横幅展示成功回调
},
onAdRevenuePaidCallback: (McAd ad) {
// 横幅广告收益回调
},
onAdLoadFinishedCallback: (String adUnitId) {
// 本轮加载结束回调
},
),
extraParameters: {"key": "value"}, // 设置额外参数,只用于 Max
localExtraParameters: {"key": "value"}, // 设置额外参数
adaptiveBannerWidth: 320.0, // 可选,设置自适应横幅宽度
);
}
💡 Tips
McAdView组件在挂载到 Widget 树时会自动加载广告。- 如需手动刷新广告,可通过
McAdViewController调用loadAd()方法。- 设置
adaptiveBannerWidth后,横幅高度将根据宽度自动适配。- 您也可以通过
McSdk.getAdaptiveBannerHeightForWidth(width)提前获取推荐高度。
仅程序化方式需要手动控制展示与隐藏。Widget 方式由 Flutter Widget 生命周期自动管理。
// 展示横幅广告
McSdk.showBanner("your mediation unit id");
// 隐藏横幅广告
McSdk.hideBanner("your mediation unit id");
当不再需要横幅广告时,请及时释放资源以避免内存泄漏。
// 释放横幅广告资源
McSdk.destroyBanner("your mediation unit id");
💡 Tips
- 调用
destroyBanner后,该广告位的所有回调将停止触发。- 如需再次展示,需重新调用
createBanner创建广告。
通过自定义参数可以向广告平台传递额外配置信息。
// 设置额外参数,只用于 Max
McSdk.setBannerExtraParameter(
"your mediation unit id",
"banner_test_extra_key",
"banner_test_extra_value",
);
// 设置额外参数
McSdk.setBannerLocalExtraParameter(
"your mediation unit id",
"banner_test_local_extra_key",
value,
);
如需获取指定宽度下的自适应横幅推荐高度,可使用以下方法:
double? height = await McSdk.getAdaptiveBannerHeightForWidth(320.0);
if (height != null) {
// 使用推荐高度布局横幅容器
print("推荐横幅高度: $height");
}