Simplificando Analytics com Kotlin no Android!

William Gouvea
Android Dev BR
Published in
3 min readJan 28, 2021

Objetivos

  • Adicionar e remover serviços de análise rapidamente
  • Adicionar e remover eventos rapidamente
  • Capaz de se integrar rapidamente a qualquer projeto

Mercado de Analytics

Cada vez mais, as organizações têm requisitos rigorosos desde o momento em que os dados são gerados até o momento em que os insights acionáveis ​​são entregues aos usuários. Portanto, os dados precisam ser coletados, armazenados, processados ​​e analisados ​​em janelas relativamente curtas — variando de diariamente a em tempo real.

Você sabe quem são seus usuários? O que os motiva a comprar? O que fará com que eles desinstalem seu aplicativo? Para aumentar o seu público, é preciso ter as ferramentas e o processo para responder a essas perguntas.

Primeiro, podemos definir a interface Analytics.kt que tem apenas um método chamado track(EventBuilder. () ->Unit) mas o que isso significa?

Nossa implementaçao externa para API

Observe que a classe AnalyticsImpl não precisa receber contexto Android, apenas uma lista de objetos Tracker.

Interface Tracker
Como inicializar o nosso Analytcs dentro da classe que extende Application no Android

Existem algumas maneiras de tornar o Analytics um singleton e ele dependerá do tamanho do seu projeto e do mecanismo de DI.

Singleton Pattern

Koin

Vale ressaltar que podemos usar a mesma estratégia de esconder a implementação atrás de uma interface (Facade) e compor diferentes comportamentos como:

  • Dispatcher HTTP com OkHttp ou Retrofit ou Ktor
  • Relatório de falhas com Crashlytics ou BugSnag ou AppCenter
Interface CrashReporter simple e tambem implementa a interface Tracker
  • Logging(Firebase,New Relic, ELK, Snowplow)
AndroidLogTracker loga no Logcat usando Android Log

Chave de API única e genérica

Observe o uso de UUID.randomUUID (), compartilhei algumas ideias sobre esse assunto aqui, verifique e dê seu feedback e deixe um comentario caso queira esse artigo em português!

Classes e hierarquias com Sealed Classes

Eventos como data classes simples e hierarquia de classes com sealed classes são um bom ajuste, uma vez que a mesma abordagem em direção ao MVVM é utlizada amplamente em aplicativos Android nos dias de hoje.

Event é uma sealed class que possui EventTrack/CrashTrack como filhas e utliza constantes como StringDef

Lambda With Receivers e Builders em Kotlin

Builder class usando @DslAnnotation e alguns açucares sintaticos
Uso dentro do projeto

Conclusão

A solução completa consiste em apenas alguns arquivos minúsculos, que você pode verificar aqui.

Depois de adicionar alguns arquivos Kotlin simples, quando você precisar remover ou adicionar “mais uma ferramenta de tracking do gerente de projeto ou do PO”, você só precisa adicionar a dependência ao arquivo build.gradle e criar uma classe que implemente o Tracker e o implemente de acordo com a documentação do tracker.

Gostou da biblioteca? veja meu perfil e me dê um aplauso e deixe uma estrela no GitHub. :)

https://www.linkedin.com/in/williamgouvea/
Por último, mas não menos importante, comentários / sugestões são sempre bem-vindos. Continue aprendendo e compartilhando.

--

--

William Gouvea
Android Dev BR

Dad, Husband, Curious, Pet Lover and also Android Specialist - Reverse Engineer Specialist - Senior Backend Developer.