Nativo
Os anúncios nativos são um tipo de anúncio que pode ser exibido usando o mesmo estilo visual do restante do app, o que permite uma integração natural e não intrusiva com a interface do usuário.
Diferentemente dos outros formatos, o app fornece o layout e o SDK o preenche com os assets do anúncio, independentemente de qual fonte de demanda o tenha preenchido.
Layout do anúncio
Seção intitulada “Layout do anúncio”O primeiro passo é criar o layout que será usado para exibir os anúncios. Trata-se de um arquivo de layout comum, em que cada view que exibirá um asset do anúncio precisa de um identificador:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical">
<TextView android:id="@+id/ad_headline" android:layout_width="match_parent" android:layout_height="wrap_content" />
<FrameLayout android:id="@+id/ad_media" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="120dp" />
<Button android:id="@+id/ad_call_to_action" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>Com o layout pronto, uma instância de NativeAdViewBinder o conecta ao SDK. Apenas o layoutId é obrigatório, então você pode vincular somente os assets que o seu layout exibe:
val binder = NativeAdViewBinder.Builder(R.layout.native_ad) .setAdvertiserTextViewId(R.id.ad_advertiser) .setBodyTextViewId(R.id.ad_body) .setCallToActionButtonId(R.id.ad_call_to_action) .setHeadlineTextViewId(R.id.ad_headline) .setIconImageViewId(R.id.ad_app_icon) .setMediaContentViewId(R.id.ad_media) .setPriceTextViewId(R.id.ad_price) .setRatingContentViewId(R.id.ad_rating) .setStoreTextViewId(R.id.ad_store) .build()NativeAdViewBinder binder = new NativeAdViewBinder.Builder(R.layout.native_ad) .setAdvertiserTextViewId(R.id.ad_advertiser) .setBodyTextViewId(R.id.ad_body) .setCallToActionButtonId(R.id.ad_call_to_action) .setHeadlineTextViewId(R.id.ad_headline) .setIconImageViewId(R.id.ad_app_icon) .setMediaContentViewId(R.id.ad_media) .setPriceTextViewId(R.id.ad_price) .setRatingContentViewId(R.id.ad_rating) .setStoreTextViewId(R.id.ad_store) .build();O builder aceita os seguintes assets:
| Método | Obrigatório | Descrição |
|---|---|---|
setAdChoicesContentViewId(int) | Não | Contêiner para o ícone do AdChoices |
setAdvertiserTextViewId(int) | Não | Nome do anunciante |
setBodyTextViewId(int) | Não | Descrição do anúncio |
setCallToActionButtonId(int) | Não | Botão que convida o usuário a interagir com o anúncio |
setHeadlineTextViewId(int) | Não | Título do anúncio |
setIconImageViewId(int) | Não | Ícone do anúncio |
setMediaContentViewId(int) | Não | Contêiner para o conteúdo de mídia (imagem ou vídeo) |
setOptionsContentViewId(int) | Não | Contêiner para a view de opções do anúncio |
setPriceTextViewId(int) | Não | Preço do produto promovido |
setRatingContentViewId(int) | Não | Contêiner para a avaliação do produto promovido |
setStoreTextViewId(int) | Não | Loja do produto promovido |
Integração
Seção intitulada “Integração”Para solicitar um anúncio nativo, você precisa fazer uma integração por código como mostrado no exemplo abaixo:
class MainActivity : Activity() {
private var nativeAd: NativeAd? = null
private var nativeAdLoader: NativeAdLoader? = null
// O binder criado na seção anterior private val binder = NativeAdViewBinder.Builder(R.layout.native_ad) .setCallToActionButtonId(R.id.ad_call_to_action) .setHeadlineTextViewId(R.id.ad_headline) .setMediaContentViewId(R.id.ad_media) .build()
override fun onCreate(savedInstanceState: Bundle?) { ... nativeAdLoader = NativeAdLoader( this, "Ad Unit ID da Wortise", nativeListener).also { it.loadAd() } }
override fun onDestroy() { ... nativeAd?.destroy() nativeAdLoader?.destroy() }
private val nativeListener = object : NativeAdLoader.Listener {
override fun onNativeClicked(ad: NativeAd) { // Invocado quando o anúncio foi clicado }
override fun onNativeFailedToLoad(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 onNativeImpression(ad: NativeAd) { // Invocado quando o anúncio gerou uma impressão }
override fun onNativeLoaded(ad: NativeAd) { // Invocado quando o anúncio foi carregado nativeAd?.destroy() nativeAd = ad
val adView = NativeAdView(this@MainActivity, binder)
// Por exemplo, adicionamos o NativeAdView em um FrameLayout val frameLayout = findViewById<FrameLayout>(R.id.frame) frameLayout.removeAllViews() frameLayout.addView(adView)
nativeAdLoader?.renderAd(adView, ad) }
override fun onNativeRevenuePaid(ad: NativeAd, data: RevenueData) { // Invocado quando o anúncio gerou receita } }}public class MainActivity extends Activity {
private NativeAd mNativeAd;
private NativeAdLoader mNativeAdLoader;
// O binder criado na seção anterior private final NativeAdViewBinder binder = new NativeAdViewBinder.Builder(R.layout.native_ad) .setCallToActionButtonId(R.id.ad_call_to_action) .setHeadlineTextViewId(R.id.ad_headline) .setMediaContentViewId(R.id.ad_media) .build();
@Override public void onCreate(Bundle savedInstanceState) { ... mNativeAdLoader = new NativeAdLoader( this, "Ad Unit ID da Wortise", mNativeListener); mNativeAdLoader.loadAd(); }
@Override public void onDestroy() { ... if (mNativeAd != null) { mNativeAd.destroy(); }
mNativeAdLoader.destroy(); }
private final NativeAdLoader.Listener mNativeListener = new NativeAdLoader.Listener() {
@Override public void onNativeClicked(@NonNull NativeAd ad) { // Invocado quando o anúncio foi clicado }
@Override public void onNativeFailedToLoad(@NonNull AdError error) { // Invocado quando não foi possível carregar o anúncio // (por causa de um erro ou sem preenchimento (no fill)) }
@Override public void onNativeImpression(@NonNull NativeAd ad) { // Invocado quando o anúncio gerou uma impressão }
@Override public void onNativeLoaded(@NonNull NativeAd ad) { // Invocado quando o anúncio foi carregado if (mNativeAd != null) { mNativeAd.destroy(); }
mNativeAd = ad;
NativeAdView adView = new NativeAdView(MainActivity.this, binder);
// Por exemplo, adicionamos o NativeAdView em um FrameLayout FrameLayout frameLayout = findViewById(R.id.frame); frameLayout.removeAllViews(); frameLayout.addView(adView);
mNativeAdLoader.renderAd(adView, ad); }
@Override public void onNativeRevenuePaid(@NonNull NativeAd ad, @NonNull RevenueData data) { // Invocado quando o anúncio gerou receita } };}O método renderAd preenche as views do layout com os assets do anúncio e as registra para rastrear os cliques e as impressões. Ele retorna false quando não foi possível renderizar o anúncio.
Assets do anúncio
Seção intitulada “Assets do anúncio”A classe NativeAd expõe os assets do anúncio, que podem ser usados para personalizar o layout antes de renderizá-lo:
| Propriedade | Tipo | Descrição |
|---|---|---|
advertiser | String? | Nome do anunciante |
body | String? | Descrição do anúncio |
callToAction | String? | Texto da chamada para ação |
headline | String? | Título do anúncio |
icon | Image? | Ícone do anúncio |
images | List<Image> | Imagens do anúncio |
mediaContent | MediaContent? | Conteúdo de mídia do anúncio (imagem ou vídeo) |
price | String? | Preço do produto promovido |
rating | Double? | Avaliação do produto promovido |
store | String? | Loja do produto promovido |
Parâmetros de requisição
Seção intitulada “Parâmetros de requisição”O método loadAd também aceita uma instância de RequestParameters, da mesma forma que os demais formatos:
nativeAdLoader?.loadAd(RequestParameters(agent = "seu agente"))RequestParameters parameters = new RequestParameters();parameters.setAgent("seu agente");
mNativeAdLoader.loadAd(parameters);Migração do GoogleNativeAd
Seção intitulada “Migração do GoogleNativeAd”Se o seu app já integrou a classe descontinuada GoogleNativeAd, estas são as equivalências com a nova integração:
| Descontinuado | Substituição |
|---|---|
GoogleNativeAd(context, adUnitId, listener) | NativeAdLoader(context, adUnitId, listener) |
GoogleNativeAd.Listener | NativeAdLoader.Listener |
load() | loadAd() (ou loadAd(parameters)) |
onNativeLoaded(ad, nativeAd) | onNativeLoaded(ad) — um NativeAd, sem tipo do Google |
onNativeFailedToLoad(ad, error) | onNativeFailedToLoad(error) |
withNativeAdOptions(options) | removido — o SDK configura a requisição |
Seu próprio NativeAdView do Google e a vinculação dos assets | NativeAdViewBinder + NativeAdView + renderAd |
Na prática, as mudanças são:
- Abandone os tipos do Google. Não há mais
com.google.android.gms.ads.nativead.NativeAdnos callbacks, então o app não precisa mais importar as classes do Google Mobile Ads para anúncios nativos. - Descreva o layout uma única vez. Em vez de buscar cada view e atribuí-la ao
NativeAdViewdo Google, declare os identificadores em umNativeAdViewBinderconforme explicado na seção Layout do anúncio. - Renderize por meio do loader. Onde o app costumava configurar o
NativeAdViewdo Google e atribuir o anúncio a ele, agora ele cria umNativeAdViewcom o binder e chamarenderAd.
override fun onNativeLoaded(ad: GoogleNativeAd, nativeAd: NativeAd) { val adView = // seu NativeAdView do Google
adView.headlineView = adView.findViewById(R.id.ad_headline) adView.callToActionView = adView.findViewById(R.id.ad_call_to_action) adView.mediaView = adView.findViewById(R.id.ad_media) // ... uma linha por asset ...
adView.setNativeAd(nativeAd)}override fun onNativeLoaded(ad: NativeAd) { val adView = NativeAdView(context, binder)
nativeAdLoader?.renderAd(adView, ad)}Integração legada
Seção intitulada “Integração legada”Os apps que ainda usam GoogleNativeAd recebem a instância NativeAd do Google no callback onNativeLoaded e são responsáveis por construir o NativeAdView e registrar cada asset, conforme descrito na documentação do Google.
© 2026 Wortise. Todos os direitos reservados.