D&D - Party Perfeita para sua Aplicação Android

Rodrigo Vianna Calixto de Oliveira
Android Dev BR
Published in
7 min readFeb 18, 2022
https://www.rpgtavernadeferro.com/o-que-e-rpg-de-mesa/

No mundo de hoje quando trabalhamos com projetos de software, sabemos que cada vez mais o desenvolvimento de Mobile tem exigido entregas com velocidade. Devido a isso, quis trazer um caso em que o time de produto queria criar campanhas para melhorar o engajamento e mostrar promoções de planos no aplicativo resultando e uma solução global para diversas situações e funcionalidades do projeto. Vamos lá!

Referente a solução inicial da campanha o time de desenvolvimento tinha dado uma ideia de utilizar alguns templates pré estipulados dentro do projeto onde essas informações iriam vir com um certo padrão da API para popular os dados da tela mostrando basicamente alguns tipos de layouts para o usuário final.

Porém essa solução tinha algumas limitações de visualizações estando de uma forma bem engessada e como eu já tive uma experiência de trabalhar com projetos que utilizam o conceito Server Driven UI pensei em uma ideia diferente seguindo uma outra direção. Além disso, eu estava querendo colocar em prática uma solução que tinha em mente mais elaborada para fluxos dinâmicos como vou mostrar para vocês resultando em 4 pilares importantes para que tudo isso desse certo reforçando um questionamento pra mim mesmo.

Porque não podemos fazer telas customizadas vindas da API junto com ações podendo abrir outros fluxos e que isso tudo ainda seja rastreado, e claro, utilizando componentes padronizados pela empresa (Design System)?

A partir disso que irei te mostrar não só uma solução, mas a aventura de 4 pilares (Server Driven Ui, Navegação, Analytics, Design System) que juntos concluíram essa quest.

Agora bora para Aventura!!!

Como falado anteriormente o Conde do Castelo dos Produtos havia solicitado uma missão, ajudar os camponeses(usuários) do castelo a descobrir novas fontes de recursos(funcionalidades) e tesouros(promoções de planos) para eles terem uma experiência melhor fazendo seu castelo(aplicativo) um lugar mais feliz.

O Paladino foi acionado para tentar resolver essa situação já que a proposta feita poderia não suprir todas as necessidades do reino(empresa). Com tal desafio em mãos, resolveu contratar um grupo de aventureiros para fazer essa expedição:

Mas antes disso para realizar essa quest eu preciso da sua contribuição, para criar uma poção mágica para ajudar os nobres aventureiros, eu estou precisando de um ingrediente que está faltando que é os leitores se inscreverem no meu canal do youtube, isso fará com que a poção esteja completa dando maior possibilidades para eles finalizarem a missão com sucesso.

O Guerreiro Mestre de Armas (Server Driven UI)

http://rpgmassacre.blogspot.com/2013/02/dicas-de-interpretacao-parte-3-guerreiro.html

Baseada no conceito Server Driven UI, O Guerreiro Mestre de Armas apresenta toda a versatilidade e poder de adaptação em ambientes mais adversos, com sua variedade infinita de armas ele é a representação de que com seus talentos pode de fato ser qualquer coisa em qualquer lugar. Além disso, por estar sempre na linha de frente, ele está protegendo seus aliados que potencializam ainda mais o seu poder.

Esta solução eu já tinha trabalhado e desenvolvido anteriormente que é basicamente utilizar um RecyclerView com múltiplos tipos de itens, onde cada ViewType será um componente e para isso precisamos aproveitar um conceito chamado ViewRender que é uma forma de simplificar a entrada de dados para converter em um tipo legível para nosso adapter que posteriormente será mostrado na nossa tela, com isso criei uma versão 2.0 da solução chamado Dynamic Views que é responsável pelo mecanismo de mostrar dinamicamente qualquer elemento da tela.

Caso queira saber mais dos seus talentos deste guerreiro fiz um artigo explicando o uso da biblioteca do Dynamic Views.

O Mago Implacável(Navegação)

https://twitter.com/patopapao/status/971814332051935233?lang=es

O Mago implacável com toda a sua magia consegue levar seus aliados em um piscar de olhos para diferentes partes do reino/dungeons/floresta fazendo com que eles cheguem cada vez mais rápido no seu destino. Ele é a representação de que em projetos mobile é muito comum ter a necessidade de fazer navegação entre telas, seja através de fluxos internas ou vindo de links externos que redirecionam para sua aplicação sendo conhecido como Deeplink.

A ideia inicial foi criar uma biblioteca para facilitar o uso de Deeplink no projeto, já que em desenvolvimento Android existe um problema, que é, quando temos um projeto modularizado e nós precisamos acessar outras telas nas quais elas não se conhecem.

Além disso, o uso de deeplinks internos e externos em projeto de grande escala é cada vez utilizado como um recurso não só a favor do projeto, mas também do produto. Devido a isso, a solução basicamente é fazer o mapeamento das portas de entrada do projeto baseado em 3 partes:

parte 1:

  • Cadastrar o nome da aplicação, isto é, a porta de entrada para todas as rotas cadastradas (scheme);
  • Mapear todas as rotas (authority);
  • Criação de objetos de cada funcionalidade que possui seu próprio authorithy, path e sua pilha de telas;

parte 2:

  • Montar suas rotas(DeeplinkRouteProcessor) de acordo com as telas que serão exibidas, isto é, cada tela da sua aplicação irá abrir uma Activity;

parte 3:

  • A biblioteca pega todas essas informações, faz uma busca do deeplink passado através do authorithy identificando este objeto e trazendo a rota montada pelo DeeplinkRouteProcessor com sua Activity e sua pilha de Activities(se houver) criando Intents para abrir a tela com toda a sua stack.

Caso queira saber suas magias fiz um artigo explicando o uso da biblioteca do DeeplinkRouter.

A Ranger Caçadora(Analytics)

https://br.pinterest.com/pin/646125877762690161/

Conhecida como A Ranger Caçadora de Informações, com sua habilidade de rastrear ela consegue encontrar os caminhos para onde ter que ir e quais caminhos foram passados fazendo com que a sua party nunca se perca. Ela utiliza seus sentidos selvagens para interpretar qualquer companheiro animal(NewRelic, Analytics, etc…) com isso ela consegue repassar a informações para seus aliados.

Esta solução também gerou uma biblioteca que é uma centralizadora de bibliotecas de métricas(NewRelic, Analytics, etc…) e que atua como um delegate, isto é, direcionando os eventos para cada a biblioteca específica. No caso a solução cria uma abstração para cada biblioteca externa fazendo com que o ponto de entrada sejam classes pré definidas por tipo de monitoramento, com isso é identificado para qual biblioteca de métricas o evento será direcionado. Além de muito versátil, possibilita a utilização de várias customizações tudo de maneira orgânica compreendida pela lib.

Caso queira saber das suas habilidades e mais sobre seus companheiros animais espere um pouco, pois o artigo dela ainda está em treinamento e quando a Ranger passar para o próximo nível será publicada.

A Clériga do Domínio do Conhecimento(Design System)

https://br.pinterest.com/pin/3448137205973777/

A Clériga do Domínio do Conhecimento utiliza toda sua sabedoria para guiar seus aliados conforme a doutrina(documentação) do reino, erguendo seu símbolo do sol utiliza suas magias de transmutação para alterar as armas do guerreiro durante seu combate. Além disso, ela evangeliza todos do reino com sua religião canalizando sua divindade mostrando que não precisam se preocupar em ter que trabalhar repetidamente em algo que seu deus já provê.

Baseado no Design System que é um sistema unificado que utiliza padrões e componentes estabelecidos pela empresa. Ela possui uma coleção de componentes que devem ser reutilizáveis para determinados produtos, indo muito mais além do se limitar em apenas componentes, mas também criando a identidade visual da empresa trazendo com isso alguns benefícios como:

  • Otimizar o tempo de desenvolvimento dos times que precisarem implementar telas;
  • Diminuir a duplicação de componentes no projetos;
  • Reutilização de código já que toda a estrutura do componente está pronta;

Porém para que isso de certo é necessário criar uma cultura de colaboração da empresa onde todas as pessoas estejam envolvidas nesse processo ajudando a criar documentações, novas soluções e novos componentes.

Formação da party nesta quest(Fluxograma):

Resultado utilizando um sample como base:

Exemplo do DynamicView publicando um Toast os eventos de Analytics
Exemplo do DeeplinkRouter

Bora celebrar na Taverna:

https://www.dungeonsolvers.com/2018/05/18/party-composition/

Essa solução atualmente não está se limitando apenas em campanhas, ela se propagou para outros tipos de funcionalidades que exigem o uso desses 4 pilares com toda essa flexibilidade e tem dado ótimos resultados e velocidade para o time.

E isso é tudo galera. A proposta deste artigo foi tentar fazer uma analogia um pouco diferente do habitual e terão outros grupos de aventureiros em novas missões! Aguardem… Deixem seus comentários do que acharam desse tipo de proposta.

Caso queria saber dos membros da party tecnicamente:

Ranger -> em processo;

Clériga -> não terá nenhuma referência técnica;

Agradeço e se tiver qualquer feedback, deixa ai nos comentários ou entre em contato comigo no LinkedIn ou https://flow.page/rviannaoliveira.

--

--