0.0.1 • Published 2 years ago

calllogstest v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Sobre o Asset

Tendo em mente a demora e incômodo propocionados pelo atendimento através de URAs tradicionais, o motivador deste asset é a necessidade observada de um "meio de campo" que procure resolver mais rápida e simplificadamente a solicitação do cliente através do autoatendimento do mesmo.

A ideia deste aplicativo é, então, realizar a captura de uma chamada telefônica para um determinado número e, a partir deste evento, abrir uma interface visual que apresente as opções mais requisitadas por clientes que ligam para a URA da empresa.

Arquitetura e Componentes

Este app foi adaptado para que a captura de chamadas fosse possível em diferentes versões Android. Esta sessão explicará as maneiras com que a captura é realizada em dois sub-tópicos:

Versão Android = 9:

O aplicativo se utiliza de Broadcast Receivers para receber do Sistema Operacional do celular toda alteração de estado em chamadas telefônicas (EXTRA_STATE_IDLE, EXTRA_STATE_RINGING e EXTRA_STATE_OFFHOOK).

Quando o app, através deste receptor, percebe que há uma chamada disparada, ele faz uma segunda validação, verificando se o número para o qual se discou é o especificado para monitoramento.

Versão Android >= 10:

A fim de ser notificado pelo sistema operacional mediante o evento de o usuário disparar uma chamada telefônica, fez-se necessário registrar o aplicativo como o serviço de redirecionamento de chamadas padrão do dispositivo da usuário.

Esta solicitação é realizada através da classe RoleManager, adicionada a partir da API level 29 (Android 10).

O "role" (papel/função/cargo) que deseja-se adquirir, como dito acima, é o de redirecionamento de chamadas telefônicas ou, em termos técnicos, ROLE_CALL_REDIRECTION. Com este papel, o app pode desfrutar dos métodos de redirecionamento/cancelamento de chamadas disparadas disponíveis na classe CallRedirectionService.

Independentemente da versão...

...o aplicativo, através do Broadcast (= Android 9) ou do "role" de CallRedirectionService (>= Android 10) , é capaz de encerrar essa chamada disparada e trazer sua interface como atividade principal na tela do celular do usuário.

Dentre as opções apresentadas nesta simples interface que foi desenvolvida para a demo, temos dois botões:

  • Abrir Suporte:

    Exibe, em um iframe, um página web a fim de exemplificar a funcionalidade do app.

  • Retornar à Chamada:

    Possibilita que o cliente não satisfeito com as opções apresentadas na interface opte por retornar a ligação da URA, sem ser interrompido pelo app novamente.

A implementação do Broadcast Receiver também é utilizada para que o app pudesse saber quando deveria ignorar a chamada disparada para o número monitorado ao invés de ativar seu processo de captura, cancelamento da ligação e apresentação da interface visual.

Esta funcionalidade de ignorar a chamada disparada sob determinadas condições é importante pelo fato de que desejou-se implementar um botão de "Retornar à ligação" no aplicativo. Para que o clicar deste botão não ocasionasse um loop em que a ligação feita pelo próprio app fosse capturada e cancelada, utilizou-se uma variável boolean ignore, que é atualizada mediante informação recebida pelo Broadcast Receiver:

  • Ao clicar no botão "Retornar à ligação", a variável ignore é atualizada para true;
  • Ao encerrar de uma ligação (independente do número telefônico discado), a variável ignore é atualizada para false;

A captura de chamadas e exibição da interface só acontecerá caso a variável ignore seja false;

Pre-requisitos

Para testar o código fonte disponibilizado, é necessário ter um aparelho celular android que possa fazer chamadas telefônicas.

Também é necessário conceder algumas permissões para que o app possa:

  • Identificar o status de chamadas do dispositivo;
  • Verificar se o número discado é o da URA definida;
  • Encerrar a chamada ao fazer a captura;
  • Iniciar uma nova chamada mediante clique no botão "Retornar à chamada";

Em termos técnicos, as permissões solicitadas pelo app são:

  • Android = 9

    • ANSWER_PHONE_CALLS
    • CALL_PHONE
    • READ_PHONE_STATE
    • READ_CALL_LOG
  • Android >= 10

    • CALL_PHONE
    • READ_PHONE_STATE
    • Ser reconhecido como CallRedirectionService padrão

Como realizar o Deployment

Há duas maneiras que o app pode ser instalado:

Através da Apk

Neste link é possível baixar a apk do aplicativo em questão. Ela se trata do aplicativo compilado e pronto para ser instalado em um celular Android.

Para instalar um app não originário da Play Store, é preciso dar uma permissão de instalação de apps externos ao aplicativo utilizado para exibir o arquivo apk. A solicitação de tal permissão é apresentada através do seguinte modal:

Clicando em "Settings" (o texto no botão pode mudar conforme língua selecionada para o dispositivo e conforme marca do aparelho), o sistema redireciona para a tela em que é possível conceder a permissão de instalar apks externas:

Feito isso, basta instalar o app através do próximo modal apresentado:

Fazendo Build e instalando através do React Native

Após completar todos os passos de setup inicial do React Native, é possível instalar o app conectando o celular via usb no computador e rodando o seguinte comando na raiz do diretório do código fonte:

    npx react-native run-android

Para o celular ser identificado, no entanto, é preciso habilitar a opção de USB Debugging no celular Android. O passo a passo abaixo mostra como fazê-lo:

  1. Abra o aplicativo de configurações do seu celular e encontre a opção "Sistema":
  1. Selecione a opção "Sobre o dispositivo"
  1. Selecione a opção "Informações de Software":
  1. Clique repetidamente na opção "Build Number":
  1. Isso habilitará a opção de "Opcões do desenvolvedor", disponível no menu "Sistema" do app de configurações:
  1. Dentro do menu de opções do desenvolvedor, habilite o toggle de "USB Debugging":

Pronto! Conecte o celular no computador via USB e execute o comando do react explicado anteriormente:

    npx react-native run-android

Guia do Usuário

Na primeira execução do aplicativo, serão solicitadas ao usuário a concessão das permissões de acordo com a versão android do dispositivo em questão:

Uma vez que o usuário concorde com estas concessões, o aplicativo está pronto para realizar capturas. O número que está sendo monitorado, por padrão, é o 115, embora isto possa ser personalizado no código fonte.

Disque e ligue para este número e veja o app funcionando!