Pular para o conteúdo

Banner

Os anúncios de banner são anúncios retangulares de imagem ou texto que ocupam um espaço dentro do layout do aplicativo. Eles permanecem na tela enquanto os usuários interagem com o app e podem ser atualizados automaticamente após um determinado período de tempo. Se você está começando na publicidade mobile, eles são uma excelente opção para começar.

Existem três formas de integrar um banner: adicionando a view do banner a um layout XML, criando-a por código ou incorporando-a ao Jetpack Compose. Abaixo mostramos exemplos de cada método:

<com.wortise.ads.banner.BannerAd
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:adSize="HEIGHT_50"
app:adUnitId="Ad Unit ID da Wortise"
/>

O widget oferece suporte aos seguintes parâmetros:

ParâmetroTipoObrigatórioDescrição
app:adUnitIdStringSimO ID do ad unit a ser atribuído ao banner
app:adSizeAdSizeNãoTamanho máximo (altura) do banner. Os valores possíveis para este parâmetro estão declarados na classe AdSize
app:autoRefreshTimeIntegerNãoValor em segundos que representa o tempo que deve transcorrer para carregar um novo anúncio de banner
class MainActivity : Activity() {
private var bannerAd: BannerAd? = null
override fun onCreate(savedInstanceState: Bundle?) {
...
bannerAd = BannerAd(this).also {
it.adSize = AdSize.HEIGHT_50
it.adUnitId = "<Ad Unit ID da Wortise>"
// Por exemplo, adicionamos o BannerAd em um FrameLayout
val frameLayout = findViewById<FrameLayout>(R.id.frame)
frameLayout.addView(it)
it.loadAd()
}
}
override fun onDestroy() {
...
bannerAd?.destroy()
}
override fun onPause() {
...
bannerAd?.pause()
}
override fun onResume() {
...
bannerAd?.resume()
}
}

A classe BannerAd oferece os seguintes métodos para configurar a instância:

MétodoObrigatórioDescrição
setAdUnitId(String)SimAtribui um ad unit ao banner
setAdSize(AdSize)NãoTamanho máximo (altura) do banner. Os valores possíveis para este parâmetro estão declarados na classe AdSize
setAutoRefreshTime(long)NãoValor em milissegundos que representa o tempo que deve transcorrer para carregar um novo anúncio de banner
setAutoRefreshTime(long, TimeUnit)NãoIgual ao método anterior, mas permite especificar a unidade de tempo do valor informado

Os anúncios banner da Wortise podem ser integrados ao Jetpack Compose usando a API de interoperabilidade AndroidView do Compose.

@Composable
fun WortiseBanner() {
val context = LocalContext.current
val banner = remember { BannerAd(context) }
AndroidView(
factory = {
banner.apply {
adSize = AdSize.HEIGHT_50
adUnitId = "<Ad Unit ID da Wortise>"
loadAd()
}
},
modifier = Modifier
.fillMaxWidth()
.wrapContentHeight()
)
DisposableEffect(Unit) {
onDispose {
banner.destroy()
}
}
}

A classe BannerAd é uma View padrão do Android, portanto pode ser incorporada a uma interface Compose usando AndroidView.

A instância do banner é criada com remember para ser preservada entre recomposições e é destruída quando o composable sai da composição.

@Composable
fun MyScreen() {
Column {
// Conteúdo da sua tela
WortiseBanner()
}
}

Os banners adaptativos são um novo formato de banner em que o tamanho dos anúncios se adapta ao dispositivo e à interface do app, com o objetivo de maximizar o desempenho.

Atualmente há suporte para dois tipos de banners adaptativos:

Esse tipo de banner foi projetado para substituir os banners tradicionais de 320x50 e ser posicionado na parte superior ou inferior da tela.

Para usar esse formato, o seguinte código deve ser utilizado para configurar um tamanho adaptativo:

// Você precisa especificar a largura do banner
val adSize = AdSize.getAnchoredAdaptiveBannerAdSize(context, width)
bannerAd.adSize = adSize

Como alternativa, esta outra opção pode ser implementada para que o SDK calcule a largura do banner, passando a própria instância do BannerAd ou a View que irá contê-lo:

val adSize = AdSize.getAnchoredAdaptiveBannerAdSize(view)
bannerAd.adSize = adSize

Esse outro tipo de banner, em comparação com o ancorado, foi projetado para ter altura variável e ser posicionado dentro de um conteúdo com rolagem.

Neste caso, o seguinte código deve ser utilizado para configurar um tamanho adaptativo apropriado:

val maxHeight = 200
// Você precisa especificar a largura do banner. A altura máxima é um
// parâmetro opcional
val adSize = AdSize.getInlineAdaptiveBannerAdSize(context, width, maxHeight)
bannerAd.adSize = adSize

Como alternativa, esta outra opção pode ser implementada para que o SDK calcule a largura do banner, passando a própria instância do BannerAd ou a View que irá contê-lo:

val maxHeight = 200
val adSize = AdSize.getInlineAdaptiveBannerAdSize(view, maxHeight)
bannerAd.adSize = adSize

Os banners recolhíveis são banners ancorados que inicialmente são exibidos como uma sobreposição maior, com um botão que os recolhe até o tamanho declarado. Eles têm como objetivo melhorar o desempenho dos banners ancorados sem ocupar mais espaço de forma permanente.

Para solicitar um, passe uma instância de RequestParameters com a posição desejada ao método loadAd:

val parameters = RequestParameters(
collapsible = CollapsiblePosition.BOTTOM
)
bannerAd.loadAd(parameters)

A posição determina onde o anúncio expandido é ancorado, e deve corresponder à posição do banner dentro do layout do app:

ValorDescrição
CollapsiblePosition.BOTTOMO banner está posicionado na parte inferior da tela
CollapsiblePosition.TOPO banner está posicionado na parte superior da tela

Um listener pode ser definido em qualquer instância de BannerAd para receber os eventos que ocorrem durante seu ciclo de vida. Para isso, você precisa implementar a interface BannerAd.Listener como mostrado no exemplo abaixo:

bannerAd.listener = object : BannerAd.Listener {
override fun onBannerClicked(ad: BannerAd) {
// Invocado quando o anúncio foi clicado
}
override fun onBannerFailedToLoad(ad: BannerAd, error: AdError) {
// Invocado quando não foi possível carregar o anúncio
// (por causa de um erro ou sem preenchimento (no fill))
}
override fun onBannerImpression(ad: BannerAd) {
// Invocado quando o anúncio gerou uma impressão
}
override fun onBannerLoaded(ad: BannerAd) {
// Invocado quando o anúncio foi carregado
}
override fun onBannerRevenuePaid(ad: BannerAd,
data: RevenueData) {
// Invocado quando o anúncio gerou receita
}
}