Criar APK grátis

Ganhar dinheiro

Integração com AdMob

Configuração de monetização

1Criar conta no AdMob#

Crie uma conta no Google AdMob. Você vai precisar de uma conta Google para começar. O AdMob é a plataforma de publicidade para celulares do Google.

2Adicione seu app#

No painel do AdMob:

  • Clique em 'Apps' na barra lateral
  • Clique em 'Add App'
  • Selecione 'No' em 'Is your app listed on a supported app store?'
  • Digite o nome do seu app
  • Selecione 'Android' como plataforma
  • Clique em 'Add'

3Obter o App ID#

Depois de criar seu app:

  • Copie o App ID exibido (formato: ca-app-pub-XXXXXXXXXXXXXXXX~XXXXXXXXXX)
  • Isso é diferente do seu Ad Unit ID
  • Você vai usar isso no AndroidManifest.xml
App ID format:
ca-app-pub-1234567890123456~1234567890

4Criar bloco de anúncios (banner)#

No seu app do AdMob:

  • Clique na aba 'Ad units'
  • Clique em 'Add ad unit'
  • Selecione 'Banner'
  • Digite o nome do bloco de anúncios (por exemplo, 'Main Banner')
  • Clique em 'Create ad unit'
  • Copie o Ad Unit ID
Banner Ad Unit ID format:
ca-app-pub-1234567890123456/1234567890

5Configuração no AppMint#

No AppMint, Etapa 3:

  1. Ative 'AdMob Ads' e cole o seu AdMob App ID (o que tem ~)
  2. Ad Control: mantenha 'Automatic' - o app posiciona os anúncios para você
  3. Ative 'Banner Ad', escolha a Ad Position (Bottom ou Top) e cole o seu Banner Ad Unit ID (o que tem /)
  4. Continue com as outras configurações e gere seu app
Ad Unit ID (not App ID):
ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY

6Teste anúncios no seu app#

Durante o desenvolvimento, use os IDs de teste oficiais do Google para evitar violações de política. Copie e cole estes no gerador:

📋 AdMob App ID:
ca-app-pub-3940256099942544~3347511713

📋 Banner Ad Unit ID:
ca-app-pub-3940256099942544/6300978111

📋 Interstitial Ad Unit ID:
ca-app-pub-3940256099942544/1033173712

📋 Rewarded Ad Unit ID:
ca-app-pub-3940256099942544/5224354917

📋 Publisher ID:
pub-3940256099942544

📋 Developer Website:
https://example.com

Esses IDs de teste exibem anúncios com aparência real sem gerar receita nem violar políticas. Troque pelos seus IDs reais na produção.

Test IDs for Generator:

AdMob App ID:       ca-app-pub-3940256099942544~3347511713
Banner Ad ID:       ca-app-pub-3940256099942544/6300978111
Interstitial ID:    ca-app-pub-3940256099942544/1033173712
Rewarded Ad ID:     ca-app-pub-3940256099942544/5224354917
Publisher ID:       pub-3940256099942544
Developer URL:      https://example.com

7Anúncios intersticiais#

Anúncios intersticiais são anúncios de tela cheia que cobrem toda a interface do app. Os usuários podem fechá-los para voltar ao app.

📺 Como ativar (Etapa 3, Ad Control 'Automatic'):

  1. Ative 'Full Screen Ad'
  2. Ad Type: escolha 'Interstitial Ad'
  3. Digite seu Interstitial Ad Unit ID (ou deixe em branco para anúncios de teste)
  4. Escolha o modo de disparo:

🔄 Após navegações (padrão):
O anúncio aparece a cada N navegações de página. Por exemplo, se estiver em 4, o anúncio aparece após o 4º, 8º, 12º carregamento de página, e assim por diante.

📱 Abertura do app:
O anúncio aparece uma vez, logo após a tela de abertura, quando o app abre pela primeira vez.

👆 Sob demanda:
Sem anúncios automáticos - sua página exibe um com um toque, usando WebToApk.showInterstitialAd().

⚠️ Ad Type é uma escolha única: Interstitial OU Rewarded, não os dois.

Example: every 4 page navigations

Page 1 → No ad
Page 2 → No ad
Page 3 → No ad
Page 4 → 📺 Interstitial Ad shown!
Page 5 → No ad
Page 6 → No ad
Page 7 → No ad
Page 8 → 📺 Interstitial Ad shown!
...

8Anúncios premiados#

Anúncios premiados são anúncios em vídeo de tela cheia que os usuários assistem em troca de uma recompensa. Eles rendem mais do que anúncios de banner ou intersticiais.

🎁 Como ativar (Etapa 3, Ad Control 'Automatic'):

  1. Ative 'Full Screen Ad'
  2. Ad Type: escolha 'Rewarded Ad'
  3. Digite seu Rewarded Ad Unit ID (ou deixe em branco para anúncios de teste)
  4. Escolha o modo de disparo:

🔄 Após navegações (padrão):
Semelhante ao intersticial - o anúncio aparece a cada N carregamentos de página. 'Show ad after every N page navigations' define o N. O padrão é 4.

📱 Abertura do app:
O vídeo premiado aparece uma vez, quando o app abre pela primeira vez após a tela de abertura.

👆 Sob demanda:
Sem anúncios automáticos - o botão 'assista a um anúncio para ganhar' da sua própria página chama WebToApk.showRewardedAd().

💡 Quantas navegações?
Menos = mais anúncios (mais receita, mas pior experiência). Mais = menos anúncios (melhor experiência, mas menos receita). Recomendado: 3 a 5.

⚠️ Política do Google: anúncios premiados precisam da autorização do usuário. Nos modos Após navegações e Abertura do app, seu app primeiro mostra um aviso 'Assistir a um anúncio?' com um botão 'Não, obrigado'; o anúncio só é exibido se o usuário aceitar.

Revenue comparison (approximate):

Banner Ads:       $0.10 - $0.50 per 1000 views
Interstitial Ads: $1 - $5 per 1000 views
Rewarded Ads:     $5 - $15 per 1000 views

Recommended N (page navigations per ad):
Aggressive:  2-3 (more ads, more revenue)
Balanced:    4-5 (recommended)
Conservative: 6-10 (fewer ads, better UX)

⚠️ O AdMob exige um mecanismo de consentimento para usuários do EEE, do Reino Unido, da Suíça e de estados dos EUA.

Isso é tratado automaticamente pelo app gerado, usando a User Messaging Platform (UMP) do Google. O app vai:

  • Mostrar uma caixa de consentimento aos usuários do EEE/Reino Unido/Suíça antes de exibir anúncios
  • Mostrar uma caixa de opt-out aos usuários dos estados dos EUA aplicáveis
  • Só solicite anúncios depois de obter o consentimento

O que VOCÊ precisa fazer:

  1. No console do AdMob → Privacy & messaging → Create a European regulations message
  2. No console do AdMob → Privacy & messaging → Create a US state regulations message
  3. Defina a URL da sua política de privacidade no gerador (Etapa 3 ou Etapa 4)
  4. Confirme que sua política de privacidade menciona a publicidade do AdMob

⚠️ Sem essa configuração, o AdMob pode mostrar um aviso de política: 'Consent requirement: No CMP'

10Processo de análise de anúncios#

Depois de publicar seu app:

  • O AdMob vai analisar seu app (geralmente leva de 24 a 48 horas)
  • No começo, você verá anúncios de teste
  • Depois de aprovado, os anúncios reais começam a aparecer
  • Mantenha o conteúdo do seu app em conformidade com as políticas

11Ativar pagamentos#

Para receber a receita dos anúncios:

  • Vá em 'Payments' no painel do AdMob
  • Adicione uma forma de pagamento (conta bancária ou outras opções)
  • Verifique seu endereço
  • Configure as informações fiscais
  • Os pagamentos são feitos mensalmente após atingir o limite de US$ 100

12Boas práticas#

✅ Posição do banner: um banner na parte de baixo é menos invasivo e dá uma experiência melhor ao usuário

✅ Intersticial/Premiado: escolha um, não os dois. Anúncios premiados rendem mais, mas exigem engajamento do usuário

✅ Contagem de ações: comece com 4 a 5 navegações entre anúncios. Muito frequente = avaliações ruins

✅ Teste primeiro: sempre teste com blocos de anúncios de teste durante o desenvolvimento

✅ Acompanhe o desempenho: confira o painel do AdMob com frequência para ver ganhos e métricas

⚠️ Não clique: nunca clique nos seus próprios anúncios - isso viola a política do AdMob

⚠️ Conteúdo de qualidade: garanta que seu app ofereça valor e siga as políticas do AdMob

💡 Dica de especialista: combine Banner (sempre visível) + Intersticial ou Premiado (periódico) para a máxima receita

13Solução de problemas#

Problemas comuns e soluções:

  • Nenhum anúncio aparecendo: verifique se você está usando o Ad Unit ID correto (e não o App ID)
  • Anúncios de teste funcionam, mas os reais não: aguarde a conclusão da análise do AdMob
  • Falha na solicitação do anúncio: verifique a conexão com a internet e o status da conta do AdMob
  • Conta suspensa: revise as políticas do AdMob e apele, se necessário

14Anúncios controlados pelo desenvolvedor: posicione cada anúncio você mesmo#

Baixe a página de demonstração completa abaixo (Coin Runner): um banner dentro do layout, um intersticial entre as fases, um botão 'Assista a um anúncio para ganhar 50 moedas', um retângulo 300×250, a chave de abertura do app e um registro ao vivo de cada resultado. Compacte em ZIP, envie como um ZIP offline, escolha Developer-controlled com os IDs de teste já preenchidos e compile - cada botão se explica sozinho.

As opções acima são o modo Automático: o app exibe o banner e o anúncio de tela cheia ou premiado para você. Se você quer todos os formatos do AdMob e liberdade para colocar cada um exatamente onde sua página precisa, escolha 'Ad Control → Developer-controlled' na Etapa 3.

Neste modo NADA é automático. Informe um ID de bloco de anúncios para cada formato que você usar - banner, retângulo médio (300×250), intersticial, premiado, intersticial premiado, abertura do app - e deixe os demais em branco. Sua página então controla tudo por meio de window.AppMintAds:

  • AppMintAds.banner.attach('#slot', {size:'banner'|'medium_rectangle'}) - um banner posicionado sobre o elemento que você indicar, em um card, entre itens de lista, onde quiser. Ele acompanha o elemento ao rolar; detach() o remove. Até dois ao mesmo tempo.
  • await AppMintAds.load('interstitial') → {ok:true} ou {ok:false, code:'no_fill'|'network'|'invalid_unit'|'consent'|'ad_free'|'disabled'}
  • await AppMintAds.show('rewarded') → {shown:true, earned:true, reward:{type,amount}} ou {shown:false, reason}
  • AppMintAds.isReady('interstitial') - ative seu botão com base nisso
  • AppMintAds.appOpen.setEnabled(false) - pausa o anúncio de abertura do app enquanto o usuário está no meio de uma tarefa

O AppMintAds existe apenas dentro do app instalado - sempre verifique se o recurso está disponível (if (window.AppMintAds) …) para que a página continue funcionando em um navegador. As regras do Google continuam valendo e o app as aplica: um anúncio premiado só é exibido a partir do toque do próprio usuário (seu botão 'Assistir anúncio' É a aceitação), os intersticiais mantêm um intervalo de 60 segundos e nunca coloque um anúncio sobre uma ação principal.

// Feature-detect: AppMintAds exists only in the installed app
const ads = window.AppMintAds;

// 1. A banner INSIDE your layout — <div id="ad-slot"></div> reserves the space
if (ads) {
  const r = await ads.banner.attach('#ad-slot', { size: 'banner' });
  console.log(r.ok ? 'banner ' + r.width + 'x' + r.height : 'no banner: ' + r.code);
}

// 2. A full-page ad at a natural break (between levels), never on every tap
async function levelFinished() {
  if (ads && ads.isReady('interstitial')) await ads.show('interstitial');
  showNextLevel();          // continues whether or not an ad was shown
}

// 3. A 'Watch ad to earn 50 coins' button — the tap is the user's opt-in
watchBtn.onclick = async () => {
  if (!ads) return;                                 // browser: no native ads
  // From a tap the ad plays. Without one (a timer, a route change) the app shows
  // AdMob's "Watch an ad? / No thanks" intro first and answers code 'declined'.
  const r = await ads.show('rewarded');
  if (r.earned) addCoins(r.reward.amount || 50);   // grant ONLY when earned
  else if (r.reason === 'ad_free') addCoins(50);    // premium user: grant without an ad
  else toast('No ad available right now');          // no popup, no Skip button
};

// 4. Preload and keep the button honest
ads?.load('rewarded').then(r => { watchBtn.disabled = !r.ok; });

No app, o botão desta etapa salva esses arquivos no seu celular. Aqui eles são downloads diretos.

admob-developer-demo.html HTML · 12 KB

15Eventos de status dos anúncios: saiba o que aconteceu com cada solicitação#

Todo anúncio controlado pelo desenvolvedor informa seu ciclo de vida completo em UM evento, appmint:ad, para que você possa registrar preenchimentos, reagir a falhas e controlar sua própria interface:

{ type, phase, slot?, code?, adCode?, message?, width?, height?, reward?, earned? }

  • type: banner | mrec | interstitial | rewarded | rewarded_interstitial | app_open
  • phase: loading → loaded | failed → opened → impression → clicked → closed, mais rewarded (uma recompensa foi ganha) e show_failed
  • code (em failed): no_fill | network | invalid_unit | internal - adCode é o número do próprio AdMob, message é o texto dele
  • slot: qual espaço de banner, para banner/mrec

As promises dão a mesma resposta por chamada; o evento dá tudo, inclusive anúncios para os quais você não chamou show() (um anúncio de abertura do app, uma atualização de banner). No modo Automático o AppMintAds ainda existe, mas responde com o código 'automatic_mode' - use as chamadas WebToApk.showInterstitialAd()/showRewardedAd() e os eventos appmint:reward / appmint:ad-closed / appmint:ad-unavailable de lá.

window.addEventListener('appmint:ad', e => {
  const a = e.detail;
  console.log(a.type, a.phase, a.code || '', a.message || '');
  if (a.phase === 'failed' && a.code === 'no_fill') analytics.track('ad_no_fill', a);
  if (a.type === 'rewarded' && a.phase === 'rewarded') console.log('earned', a.reward);
  if (a.type === 'banner' && a.phase === 'loaded') console.log('banner ' + a.width + 'x' + a.height + ' in ' + a.slot);
});

// What can this build serve? (guard it — in a browser AppMintAds is undefined)
if (window.AppMintAds) console.log(AppMintAds.config());
// → { control: 'developer', formats: { banner: true, mrec: false, interstitial: true, ... } }

Esta página é gerada a partir do Guia de Integração dentro do próprio app, então diz exatamente o que a versão atual diz. Leia em Markdown.

Conferido com o guia atual em 22/10/2026.