Implementando o SDK do IMA em aplicativos Android

Suponha que um dia vocĂȘ decida criar um aplicativo para crianças e tente ganhar dinheiro com isso. Como a publicidade Ă© uma das maneiras mais fĂĄceis de monetizar, vocĂȘ tem uma ideia Ăłbvia de adicionar um dos SDKs de publicidade ao aplicativo e, em seguida, calcular apenas a receita. Esse poderia ser o caso se o aplicativo fosse destinado ao pĂșblico adulto. Se for destinado ao uso por menores, uma variedade de mecanismos legislativos que regem as lojas de aplicativos sĂŁo incluĂ­dos.



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.






All Articles