Criei meu próprio ad engine para anunciar meus próprios apps
Quando o KaiOS não tinha nenhum anúncio pago para exibir, o espaço ficava vazio. Então eu o preenchi com meus próprios apps — transformando espaço ocioso em uma máquina de downloads.
O KaiOS tem o seu próprio sistema de anúncios, o KaiAds, com sua própria SDK. O problema é que nem sempre existe anúncio para exibir — tudo depende da rede de anúncios e varia de acordo com vários fatores.
Na época, isso me incomodou um pouco e eu pensei:
“Já que vou adicionar esse espaço nos meus apps para exibir anúncios de terceiros, por que não, no tempo ocioso, mostrar meus próprios apps como anúncio?”
E assim nasceu o AdsEngine.
Como o KaiAds funciona
A engine do KaiOS nos fornece alguns métodos e callbacks e, através deles, podemos requisitar anúncios do tipo banner ou full screen. Os callbacks dizem se existe algum anúncio para exibir e se ele já está previamente carregado — o que evita atrasos na exibição da imagem.

O ponto principal da minha engine
Usando esses callbacks, minha engine consegue detectar quando não há nenhum anúncio disponível na rede do KaiOS — e, quando não há, exibir no lugar um banner de um dos meus próprios apps.
A grande sacada é que dá para requisitar um novo anúncio ao KaiAds a cada 30 segundos, mais ou menos, sem ser bloqueado nem receber uma resposta do tipo too many requests. Por razões óbvias ($), minha engine sempre prioriza anúncios que dão retorno financeiro. Mas, quando não há nenhum disponível, ela mostra um anúncio de um dos meus outros apps — mantendo o usuário dentro do meu ecossistema e aumentando os downloads.
Existe toda uma camada que criei para controlar, em cada app, quais outros apps eu quero exibir como propaganda — além de gerenciar a tradução do CTA de cada um. Fiz tudo isso dentro do meu backoffice, onde configuro tudo facilmente. Escrevi sobre ele aqui: o painel de controle que todo indie dev precisa ter.

Cada app no meu backoffice tem um JSON que define a URL do ícone do app, além do título, da descrição e do CTA que vão aparecer no banner. Quando um app inicia, um endpoint retorna todos os apps que eu quero exibir (os “related apps”), e o próprio app decide internamente em qual idioma exibir. A partir daí, quando o usuário toca no banner, eu o envio para um deeplink apontando para a Manifest URL do app — o que abre a loja do KaiOS direto na página dele.
Resultados
De maneira geral, os resultados foram muito bons e me ajudaram a aumentar a quantidade de downloads.
Na média, 60% das requisições para exibir um anúncio do KaiOS voltam vazias. Ou seja, na maior parte do tempo o banner está mostrando um dos meus próprios apps. Para um deles (o Wallpaper Pro), o funil em março de 2024 ficou assim:

Em usuários únicos, de 5.808:
- 5.466 viram anúncios dos meus próprios apps
- 3.336 viram anúncios do KaiOS
- 2.218 clicaram em algum dos meus anúncios
- 410 clicaram em um anúncio do KaiOS
Foi um teste muito interessante de fazer, e a engine que criei roda hoje em todos os meus apps, fazendo com que um alavanque o outro.
Um possível contra: quando eu redireciono um usuário para a loja, pode ser que ele não volte para o app que estava usando — e eu também posso perder a chance de exibir um anúncio do KaiOS que me pague. Mas, como os anúncios do KaiOS nunca pagaram um valor tão relevante, na minha visão a engine funcionou muito bem e cumpriu seu propósito: aproveitar esse gap de exibição de anúncios do KaiOS para promover os meus próprios apps. Claro que, se em algum momento eu notasse que os anúncios da rede estavam pagando muito bem, eu poderia ajustar a engine — mas acredito que isso nunca foi necessário.
Hoje meus apps já somam mais de 1,5 milhão de downloads acumulados e, em apenas um dos apps onde apliquei a engine (o do gráfico acima), ela foi responsável — durante todo o período até agora — por redirecionar mais de 53 mil cliques para outros aplicativos na loja.