Banner

Os anúncios de banner ocupam um lugar no layout do app, na parte de cima ou de baixo na tela do dispositivo. Eles permanecem na tela enquanto os usuários interagem com o aplicativo. e podem ser atualizadas automaticamente após um determinado período.

Este guia mostra como integrar anúncios de banner do Ad Manager a uma App do Flutter. Além dos snippets de código e das instruções, ele também inclui informações sobre o dimensionamento correto dos banners.

Sempre faça testes com anúncios de teste

Ao criar e testar seus apps, use anúncios de teste em vez de publicidade de produção ativa. Sua conta poderá ser suspensa se isso não for feito.

A maneira mais fácil de carregar anúncios de teste é usar nosso ID de bloco de anúncios de teste dedicado para banners:

/21775744923/example/adaptive-banner

Os blocos de anúncios de teste são configurados para retornar anúncios de teste para cada solicitação, e você pode usá-las nos seus próprios apps durante a programação, o teste e a depuração. Basta substituí-los pelos seus próprios IDs de bloco de anúncios antes de publicar seu app.

Carregar um anúncio

O exemplo a seguir instancia um anúncio de banner:

class BannerExampleState extends State<BannerExample> {
  AdManagerBannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = '/21775744923/example/adaptive-banner';

  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = AdManagerBannerAd(
      adUnitId: adUnitId,
      request: const AdManagerAdRequest(),
      size: AdSize.banner,
      listener: AdManagerBannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('AdManagerBannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
      ),
    )..load();
  }
}

A tabela abaixo lista os tamanhos padrão de banner.

Tamanho em dp (L x A) Descrição Constante AdSize
320 x 50 Banner padrão banner
320 x 100 Banner grande largeBanner
320x250 Retângulo médio mediumRectangle
468 x 60 Banner de tamanho original fullBanner
728 x 90 Ranking leaderboard
Largura fornecida x altura adaptável Banner adaptativo N/A

Para definir um tamanho de banner personalizado, defina seu AdSize preferido:

final AdSize adSize = AdSize(300, 50);

Usando AdManagerBannerAdListener, é possível detectar eventos de ciclo de vida, como quando um anúncio é carregado. Este exemplo implementa cada método e registra uma mensagem no console:

class BannerExampleState extends State<BannerExample> {
  AdManagerBannerAd? _bannerAd;
  bool _isLoaded = false;

  // TODO: replace this test ad unit with your own ad unit.
  final adUnitId = '/21775744923/example/adaptive-banner';


  /// Loads a banner ad.
  void loadAd() {
    _bannerAd = AdManagerBannerAd(
      adUnitId: adUnitId,
      request: const AdManagerAdRequest(),
      size: AdSize.banner,
      listener: AdManagerBannerAdListener(
        // Called when an ad is successfully received.
        onAdLoaded: (ad) {
          debugPrint('$ad loaded.');
          setState(() {
            _isLoaded = true;
          });
        },
        // Called when an ad request failed.
        onAdFailedToLoad: (ad, err) {
          debugPrint('AdManagerBannerAd failed to load: $error');
          // Dispose the ad here to free resources.
          ad.dispose();
        },
        // Called when an ad opens an overlay that covers the screen.
        onAdOpened: (Ad ad) {},
        // Called when an ad removes an overlay that covers the screen.
        onAdClosed: (Ad ad) {},
        // Called when an impression occurs on the ad.
        onAdImpression: (Ad ad) {},
      ),
    )..load();
  }
}

Exibir um anúncio de banner

Para mostrar um AdManagerBannerAd como widget, é necessário instanciar um AdWidget. com um anúncio compatível após chamar load(). É possível criar o widget antes chamando load(), mas load() precisa ser chamado antes de ser adicionado ao widget. árvore.

O AdWidget herda da classe Widget do Flutter e pode ser usado como qualquer outro widget. No iOS, coloque o widget em um widget com um largura e altura. Caso contrário, seu anúncio não será exibido. Um AdManagerBannerAd podem ser colocados em um contêiner com um tamanho que corresponda ao anúncio:

...
if (_bannerAd != null) {
  Align(
    alignment: Alignment.bottomCenter,
    child: SafeArea(
      child: SizedBox(
        width: _bannerAd!.size.width.toDouble(),
        height: _bannerAd!.size.height.toDouble(),
        child: AdWidget(ad: _bannerAd!),
      ),
    ),
  )
}
...

Um anúncio deverá ser descartado quando o acesso a ele não for mais necessário. A prática recomendada para chamar dispose() é depois que o AdWidget é removido da árvore de widgets ou no callback AdManagerBannerAdListener.onAdFailedToLoad().

Pronto! Agora o app está pronto para mostrar anúncios em banner.

Limitação de rolagem no Android 9 e versões anteriores

Sabemos que alguns dispositivos mais antigos ou menos potentes executam o Android 9 ou anteriormente podem ter um desempenho abaixo do ideal ao exibir anúncios de banner inline em visualizações com rolagem. Recomendamos apenas que usam esses tipos de banner no Android 10 ou versões mais recentes. Banners de posição fixa, como pois os banners ancorados não são afetados e podem ser usados com desempenho ideal em em todos os níveis da API do Android.