calllogstest
v0.0.1
Published
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 d
Downloads
3
Readme
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 paratrue
; - Ao encerrar de uma ligação (independente do número telefônico discado), a variável
ignore
é atualizada parafalse
;
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:
- Abra o aplicativo de configurações do seu celular e encontre a opção "Sistema":
- Selecione a opção "Sobre o dispositivo"
- Selecione a opção "Informações de Software":
- Clique repetidamente na opção "Build Number":
- Isso habilitará a opção de "Opcões do desenvolvedor", disponível no menu "Sistema" do app de configurações:
- 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!