Ao publicar o aplicativo ivi kids no Google Play, enfrentamos um problema de que nosso SDK de publicidade interna nĂŁo atendia aos requisitos do Googlee o aplicativo pode ter sido removido da loja. Portanto, desligamos todos os anĂșncios, o que deixava os usuĂĄrios jovens muito felizes, mas o departamento de marketing estava cronicamente insatisfeito com o desempenho financeiro.
A maneira mais lĂłgica de sair da situação era reproduzir anĂșncios que o prĂłprio Google distribui usando o serviço Google Ad Manager . E faça isso usando o SDK do IMA, que tambĂ©m Ă© um produto do Google.
Neste artigo, falarei sobre como implementamos o SDK do IMA em aplicativos ivi e ivi kids e quais limitaçÔes encontramos.

Chips IMA SDK
Não descreverei todos os recursos e estrutura do SDK do IMA, pois em qualquer caso a documentação oficial poderå dizer muito mais sobre eles .
Qual Ă© o principal recurso do SDK do IMA? E por que isso nos convĂ©m? O SDK do IMA pode reproduzir anĂșncios de vĂdeo VAST . Uma das possibilidades desse formato Ă© a criação de wrappers de anĂșncios aninhados, e o nĂșmero de wrappers pode ser formalmente infinito. Ou seja, para chegar ao vĂdeo real, vocĂȘ precisa percorrer todos os invĂłlucros da cadeia.

O SDK do IMA pode executar essa cadeia por conta prĂłpria se vocĂȘ simplesmente inserir um link para o primeiro arquivo VAST usando o mĂ©todo setAdTagUrl (String url) .
val adsRequest = ImaSdkFactory.getInstance().createAdsRequest()
adsRequest.adTagUrl = advUrl
Se vocĂȘ usar esse mĂ©todo, a tarefa do desenvolvedor serĂĄ bastante simplificada. Mas Ă s vezes (incluindo em nosso caso) o desenvolvedor do aplicativo deseja coletar suas estatĂsticas de publicidade contidas nos prĂłprios arquivos VAST. Esses arquivos nĂŁo podem ser solicitados do servidor de anĂșncios mais de uma vez, pois o servidor de anĂșncios pode enviar duas respostas diferentes para a mesma solicitação (esta Ă© a norma, os anĂșncios devem estar em constante mudança). Nesse caso, o desenvolvedor precisa coletar todos os VASTs com canetas, extrair os dados necessĂĄrios para coletar estatĂsticas a partir deles e gerar um VAST geral em sua base, que pode ser alimentado ao SDK do IMA usando o mĂ©todo setAdsResponce (String vast) :
val adsResponce = â<VAST>..</VAST>â //xml, VAST
adsRequest.adsResponse = adsResponce
Outro recurso Ăștil do SDK do IMA Ă© a capacidade de usar o reprodutor interno do aplicativo para reproduzir anĂșncios. Para fazer isso, vocĂȘ pode implementar a interface VideoAdPlayer e implementar seus mĂ©todos em seu player:
public interface VideoAdPlayer extends AdProgressProvider, VolumeProvider {
void loadAd(AdMediaInfo var1, AdPodInfo var2);
void playAd(AdMediaInfo var1);
void pauseAd(AdMediaInfo var1);
void stopAd(AdMediaInfo var1);
void release();
void addCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
void removeCallback(VideoAdPlayer.VideoAdPlayerCallback var1);
}
Mas mesmo que o aplicativo nĂŁo tenha seu prĂłprio player de vĂdeo ou nĂŁo possa ser usado por algum motivo, o SDK do IMA fornece seu prĂłprio player baseado no ExoPlayer :
val adUiContainer: ViewGroup = view
val videoAdPlayer = ImaSdkFactory.createSdkOwnedPlayer(context, adUiContainer)
LimitaçÔes do SDK do IMA
Infelizmente, a interface do usuĂĄrio do SDK do IMA Ă© triste. Esteja preparado para que seu reprodutor de anĂșncios sempre tenha a seguinte aparĂȘncia: Ă

impossĂvel alterar qualquer controle na tela do anĂșncio a partir do SDK do IMA. VocĂȘ sĂł pode alterar o idioma:
val imaSdkSettings = ImaSdkFactory.getInstance().createImaSdkSettings()
imaSdkSettings.language = "ru"

Nossa situação foi agravada pelo fato de que ivi e ivi kids existem e sĂŁo suportados em uma Ășnica base de cĂłdigo. Isso significa que com a ajuda de scripts de construção, no momento necessĂĄrio a partir de um cĂłdigo, vocĂȘ pode montar diferentes aplicativos com seus prĂłprios sinos e assobios (Ăcones, linhas, pedaços de cĂłdigo). Esta base de cĂłdigo unificada para reproduzir anĂșncios usa um mecanismo proprietĂĄrio que Ă© uma ferramenta comprovada para ganhar dinheiro para a empresa. Com a implementação do SDK do IMA, esse cĂłdigo nĂŁo poderia ser simplesmente jogado fora, jĂĄ que o aplicativo usa vĂĄrios formatos de anĂșncio, nĂŁo apenas VAST.
A interface de anĂșncio ivi parece completamente diferente da interface IMA SDK e nĂŁo pode ser adaptada a ela:

Portanto, a decisĂŁo mais Ăłbvia parecia ser a de deixar nosso mecanismo de publicidade ( NSD ) e, simultaneamente, implementar o SDK do IMA, de modo que quando um anĂșncio que contĂ©m links para os servidores do Google chegar, ele use o IMA, e para todos os outros anĂșncios - NSD, que tambĂ©m pode reproduzir anĂșncios no formato VAST e percorre toda a cadeia de wrappers, mas nĂŁo atende aos padrĂ”es da PolĂtica da FamĂlia do Google.

Atualmente, os anĂșncios do Google e de outras fontes no aplicativo ivi sĂŁo exibidos de maneiras diferentes. No aplicativo ivi kids para crianças, apenas os anĂșncios do Google sĂŁo direcionados, portanto, os vĂdeos sĂŁo exibidos apenas usando o SDK do IMA.
Resultado
IMA SDK Ă© uma ferramenta simples e conveniente para exibir anĂșncios em vĂdeo. Se vocĂȘ estĂĄ preparado para o fato de que a IU do reprodutor de publicidade nĂŁo depende de vocĂȘ, o SDK do IMA Ă© adequado para vocĂȘ. Se vocĂȘ precisa monetizar um aplicativo Android para crianças com anĂșncios, a maneira mais fĂĄcil Ă© usar a ferramenta nativa do Google - IMA SDK.