Os anúncios de banner ocupam um espaço no layout do app, na parte de cima ou de baixo da tela do dispositivo. Eles permanecem na tela enquanto os usuários interagem com o app e podem ser atualizados automaticamente após um determinado período.
Este guia ajuda você a começar a usar anúncios de banner adaptativo fixo. Os banners adaptativos fixos otimizam o tamanho do anúncio para cada dispositivo usando uma largura específica.
Os anúncios de banner adaptativo âncora são de proporção fixa, e não de tamanho fixo. A proporção é semelhante a 320x50. Depois que você especificar a largura total disponível, o SDK dos anúncios para dispositivos móveis do Google vai retornar um anúncio com a altura ideal para essa largura. A altura ideal do anúncio permanece constante em diferentes solicitações de anúncio, e o conteúdo ao redor do anúncio permanece no lugar quando ele é atualizado.
Sempre teste 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 o ID do bloco de anúncios de teste dedicado para banners:
/21775744923/example/adaptive-banner
Os blocos de teste são configurados para retornar anúncios de teste para cada solicitação, e você pode usá-los nos seus próprios apps durante a programação, o teste e a depuração. Substitua-os pelos seus próprios IDs de bloco de anúncios antes de publicar o app.
Receber o tamanho do anúncio
Para solicitar um anúncio de banner com o tamanho correto, siga estas etapas:
Receba a largura da tela do dispositivo em pixels de densidade independente (dp) usando
MediaQuery.of(context)
. Se você não quiser usar a largura de tela cheia, defina sua própria largura.Use o método estático adequado na classe
AdSize
para receber um objetoAdSize
. Por exemplo, useAdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(int width)
para saber o tamanho do anúncio para a orientação atual.
// Get an AnchoredAdaptiveBannerAdSize before loading the ad.
final size = await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
MediaQuery.sizeOf(context).width.truncate());
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() async {
// Get an AnchoredAdaptiveBannerAdSize before loading the ad.
final size = await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
MediaQuery.sizeOf(context).width.truncate());
_bannerAd = AdManagerBannerAd(
adUnitId: adUnitId,
request: const AdManagerAdRequest(),
size: size,
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();
}
}
Eventos de anúncios de banner
Com o uso de 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() async {
// Get an AnchoredAdaptiveBannerAdSize before loading the ad.
final size = await AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize(
MediaQuery.sizeOf(context).width.truncate());
_bannerAd = AdManagerBannerAd(
adUnitId: adUnitId,
request: const AdManagerAdRequest(),
size: size,
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();
}
}
Atualizar um anúncio
Se você configurou o bloco de anúncios para atualização, não é necessário solicitar outro anúncio quando ele não é carregado. O SDK dos anúncios para dispositivos móveis do Google respeita qualquer taxa de atualização especificada na interface do Ad Manager. Se você não tiver ativado a atualização, faça uma nova solicitação. Para mais detalhes sobre a atualização de blocos de anúncios, como definir uma taxa de atualização, consulte Taxa de atualização dos anúncios em apps para dispositivos móveis.
Mostrar um anúncio de banner
Para mostrar um AdManagerBannerAd
como um widget, você precisa instanciar um AdWidget
com um anúncio compatível depois de chamar load()
. É possível criar o widget antes
de chamar load()
, mas load()
precisa ser chamado antes de ser adicionado à árvore
de widgets.
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 largura e altura especificadas. Caso contrário, seu anúncio pode não ser exibido. Um AdManagerBannerAd
pode ser colocado em um contêiner com um tamanho que corresponde 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 precisa 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! O app agora 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 com Android 9 ou anteriores podem ter performance abaixo do ideal ao mostrar anúncios de banner inline nas visualizações de rolagem. Recomendamos usar apenas esses tipos de banners no Android 10 ou mais recente. Os banners de posição fixa, como os fixados, não são afetados e podem ser usados com desempenho ideal em todos os níveis da API do Android.
Saiba mais sobre outros tipos de banner
Conheça outros tipos de banners definidos nesta seção para seu aplicativo Flutter.
Banners adaptativos inline
Os banners adaptativos inline têm altura variável e são maiores e mais altos em comparação com os fixos. Recomendamos o uso de banners adaptativos inline em vez de anúncios de banner adaptativo fixos para apps que colocam anúncios de banner em conteúdo rolável. Para mais detalhes, consulte Banners adaptativos inline.
Banners que podem ser recolhidos
Os anúncios de banner recolhível são anúncios de banner que são inicialmente apresentados como uma sobreposição maior, com um botão para recolher o anúncio para um tamanho menor. Considere usar esse banner para otimizar ainda mais sua performance. Para mais detalhes, consulte anúncios de banner recolhíveis.