横幅广告

横幅广告会占据应用布局中的一处位置,要么是设备屏幕的顶部,要么是底部。用户与应用互动时,这类广告会停留在屏幕上,并且可在一段时间后自动刷新。

本指南介绍了如何将 AdMob 横幅广告植入到 Flutter 应用中。除了代码段和说明之外,本指南还介绍了如何将横幅广告调整至合适的尺寸。

务必用测试广告进行测试

在构建和测试应用时,请确保使用的是测试广告,而不是实际投放的广告。否则,可能会导致您的帐号被暂停。

对于横幅广告,加载测试广告最简便的方法就是使用我们的专用测试广告单元 ID:

这些测试广告单元 ID 已经过专门配置,可确保每个请求返回的都是测试广告。您可以在自己应用的编码、测试和调试过程中随意使用这些测试广告单元 ID。只是一定要在发布应用前用您自己的广告单元 ID 替换这些测试广告单元 ID。

实例化广告

BannerAd 需要 adUnitIdAdSizeAdRequestBannerAdListener。以下示例实例化了一个横幅广告:

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 回调中调用。

大功告成!您的应用现在就可以展示横幅广告了。