横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。
本指南介绍了如何将 AdMob 横幅广告植入到 Flutter 应用中。除了代码段和说明之外,本指南还介绍了如何将横幅广告调整至合适的尺寸。
务必用测试广告进行测试
在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的帐号被暂停。
对于横幅广告,加载测试广告最简便的方法就是使用我们的专用测试广告单元 ID:
这些测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中随意使用这些测试广告单元 ID。只是一定要在发布应用前用您自己的广告单元 ID 替换这些测试广告单元 ID。
实例化广告
BannerAd
需要 adUnitId
、AdSize
、AdRequest
和 BannerAdListener
。以下示例实例化了一个横幅广告:
final BannerAd myBanner = BannerAd(
adUnitId: '<ad unit ID>',
size: AdSize.banner,
request: AdRequest(),
listener: BannerAdListener(),
);
横幅广告尺寸
下表列出了标准横幅广告尺寸。
尺寸(宽 x 高,以 dp 为单位) | 说明 | AdSize 常量 |
---|---|---|
320x50 | 标准横幅广告 | banner
|
320x100 | 大型横幅广告 | largeBanner
|
320x250 | 中矩形 | mediumRectangle
|
468x60 | 全尺寸横幅广告 | fullBanner
|
728x90 | 页首横幅 | leaderboard
|
屏幕宽度 x 32|50|90 | 智能横幅广告 | 使用 getSmartBanner(Orientation)
|
要指定横幅广告尺寸,请设置所需的 AdSize
:
final AdSize adSize = AdSize(300, 50);
横幅广告事件
通过使用 BannerAdListener
,您可以监听各种广告生命周期事件,例如广告何时加载。以下示例实现了每个方法,并将消息记录到控制台:
final BannerAdListener listener = BannerAdListener(
// Called when an ad is successfully received.
onAdLoaded: (Ad ad) => print('Ad loaded.'),
// Called when an ad request failed.
onAdFailedToLoad: (Ad ad, LoadAdError error) {
// Dispose the ad here to free resources.
ad.dispose();
print('Ad failed to load: $error');
},
// Called when an ad opens an overlay that covers the screen.
onAdOpened: (Ad ad) => print('Ad opened.'),
// Called when an ad removes an overlay that covers the screen.
onAdClosed: (Ad ad) => print('Ad closed.'),
// Called when an impression occurs on the ad.
onAdImpression: (Ad ad) => print('Ad impression.'),
);
加载广告
实例化 BannerAd
之后,必须先调用 load()
,然后才能将其展示在屏幕上:
myBanner.load();
展示广告
要以微件形式展示 BannerAd
,您必须在调用 load()
之后实例化含有受支持广告的 AdWidget
。您可以在调用 load()
之前创建微件,但必须先调用 load()
,然后才能将该微件添加到微件树中。
final AdWidget adWidget = AdWidget(ad: myBanner);
AdWidget
继承自 Flutter 的 Widget 类,可以像其他任何微件一样使用。在 iOS 中,请确保将该微件放置在具有指定宽度和高度的微件中。否则,您的广告可能不会展示。BannerAd
可以放置在尺寸与该广告匹配的容器中:
final Container adContainer = Container(
alignment: Alignment.center,
child: adWidget,
width: myBanner.size.width.toDouble(),
height: myBanner.size.height.toDouble(),
);
广告调用 load()
后,如果不再需要访问该方法,则必须调用 dispose()
。调用 dispose()
的最佳做法是,在将 AdWidget
从微件树中移除后调用,或在 AdListener.onAdFailedToLoad
回调中调用。
大功告成!您的应用现在就可以展示横幅广告了。