Anúncios (AdMob)
Banner, interstitial e rewarded nos 4 formatos. Zero config para testar em debug.
Anúncios Google AdMob nos 4 formatos, nos 3 backends. Só nativo (iOS/Android). Na web, toda chamada de anúncio vira um no-op silencioso: o mesmo código roda em qualquer plataforma sem quebrar.
| Formato | Como usar | Premium vê? |
|---|---|---|
| Banner | KasyAdBanner() (widget) | Não, some para assinantes |
| Interstitial | showInterstitial() | Não, some para assinantes |
| Rewarded | showRewarded() | Sim, o usuário opta |
| Rewarded interstitial | showRewardedInterstitial() | Sim, o usuário opta |
Assinante ativo não vê banner nem interstitial. Os recompensados ficam porque o usuário escolhe assistir para ganhar algo.
Implementação
Pelo MCP: peça ao assistente "adiciona ads no meu projeto". Ele roda add_feature por você. Veja MCP do Kasy.
O módulo de anúncios já vem ligado no modo Rápido do kasy new, e funciona em debug com anúncios de teste sem nenhuma configuração (veja Informações). Estes passos são para colocar em produção com IDs reais.
-
Em projeto existente, confirme que o módulo está ligado:
kasy add ads # adiciona (pede os IDs opcionalmente) kasy remove ads # remove kasy add --list # mostra o que está ligado -
Crie a conta e o app no AdMob:
- Acesse admob.google.com
- Crie sua conta → Add App → selecione iOS ou Android
- Copie o App ID (ex.:
ca-app-pub-XXXXXX~YYYYYYY) - Crie unidades de anúncio para cada formato → copie os Ad Unit IDs

AdMob Console: App settings → App ID, o valor que você cola no kasy configure -
Configure no projeto:
kasy configureO comando abre o console AdMob no navegador e pede:
- App IDs (por plataforma) → gravados em
Info.plistestrings.xml - Ad Unit IDs (8 valores: 4 formatos × 2 plataformas) → gravados no
.env
Pelo MCP: com os IDs em mãos, cole-os no chat e peça "configura os IDs do AdMob". O assistente roda
configure_project_keyspor você. Veja MCP do Kasy. - App IDs (por plataforma) → gravados em
-
Para os formatos recompensados (rewarded e rewarded interstitial), configure a verificação no servidor (SSV). Banner e interstitial não precisam.
O kit já tem os endpoints prontos nos 3 backends:
Backend Endpoint Firebase ads-verifyAdReward(Cloud Function)Supabase verify-ad-reward(Edge Function)API (seu servidor) GET /ads/verify-reward- Faça o deploy do endpoint (
kasy deployno Firebase, pelo MCP:deploy_backend;supabase functions deployno Supabase) - Copie a URL do endpoint
- AdMob Console → seu app → cada unidade de rewarded → SSV → cole a URL

AdMob Console: unidade rewarded → Advanced settings → Server-side verification → callback URL - Faça o deploy do endpoint (
-
Gere o build de release:
kasy ios release # iOS flutter build appbundle --release --dart-define=ENV=prod # AndroidPelo MCP: "publica o iOS" (
release_ios).
Informações
Testar agora (debug, zero config)
Em kasy run, qualquer formato mostra anúncios de teste do Google automaticamente. Pode tocar à vontade, sem risco, sem precisar de conta no AdMob.
| Situação | O que aparece |
|---|---|
Debug (kasy run) | Anúncio de teste (automático, seguro de tocar) |
| Release sem IDs reais | Nada (some, sem risco de política) |
| Release com IDs reais | Anúncio real |
Usar no código
Banner
Uma linha, onde você quiser:
const KasyAdBanner()Para o retângulo médio:
const KasyAdBanner(size: KasyAdBannerSize.mediumRectangle)Interstitial
final ads = ref.read(googleAdsProvider.notifier);
// Mostra com cooldown (padrão 50s entre exibições):
await ads.showInterstitialIfElapsed();
// Força sem cooldown:
await ads.showInterstitial();Rewarded e Rewarded interstitial
O usuário assiste ao anúncio e ganha uma recompensa. A recompensa é verificada no servidor (SSV): nunca credite com base só no callback do cliente.
await ads.showRewarded(
onReward: (reward) {
// Só UI otimista. O crédito real vem do servidor (SSV).
},
);
await ads.showRewardedInterstitial(onReward: (reward) { /* … */ });As 8 variáveis do .env
Deixe em branco para usar anúncios de teste em debug (nada em release):
ADMOB_ANDROID_BANNER=
ADMOB_IOS_BANNER=
ADMOB_ANDROID_INTERSTITIAL=
ADMOB_IOS_INTERSTITIAL=
ADMOB_ANDROID_REWARDED=
ADMOB_IOS_REWARDED=
ADMOB_ANDROID_REWARDED_INTERSTITIAL=
ADMOB_IOS_REWARDED_INTERSTITIAL=Os App IDs (ADMOB_ANDROID_APP_ID / ADMOB_IOS_APP_ID) não ficam no .env: o kasy configure os grava direto no nativo.
Demo no Admin
Para ver os 4 formatos funcionando em qualquer build (até release):
- Abra o console Admin (toque duas vezes no número de versão em Configurações)
- Vá em Depuração → Demo de anúncios
A demo sempre usa anúncios de teste, mesmo em produção com IDs reais configurados. Isso é intencional: clicar no seu próprio anúncio real conta como "atividade inválida" no AdMob e pode banir sua conta.
Atualizado em 03/11/2026

