Casa > C > Como Construir Um Aplicativo De Mensagens Passo A Passo Para Android

Como construir um aplicativo de mensagens passo a passo para Android

main-qimg-ef592cca265c702fe8e335de0bbe850e

Já tentei desenvolver um aplicativo de mensagens e tinha sido sempre um fracasso, então deixe-me compartilhar por experiências.

Bem por aplicativo de mensagens Eu acho que você quer dizer um aplicativo de mensagens instantâneas ao invés de um aplicativo de mensagens sms.

Melhorando uma idéia de hackathon que ganhamos, decidimos fazer um aplicativo de mensagens para pessoas da mesma localidade para conversar. Eu sou um desenvolvedor bastante ingênuo naquela época e o Instant Messaging é uma besta. Mesmo depois de cerca de 1 ano de experiência desenvolvendo aplicativos andróides pensando em desenvolver um Instant Messenger é um pesadelo para mim. No entanto, eu desenvolvi o aplicativo e escolhi o caminho mais fácil disponível na época, ou seja, Parse.

Parse tinha uma api fácil de usar para começar com as notificações push e permitiu um milhão de notificações push grátis por mês, o que é mais do que suficiente para mim. Então eu comecei com Parse e desenvolvi a aplicação. Tinha poucos problemas como latência mais alta algumas vezes, etc. mas estou bem com ele, já que não queria destronar o que éapp com a minha velocidade, só queria desenvolver uma aplicação que me permitisse conversar com outra pessoa tendo a mesma aplicação. O aplicativo nunca foi um sucesso (essa é uma história completamente diferente), mas foi uma ótima experiência de aprendizado para mim e eu tive o orgulho de poder desenvolver um aplicativo que tinha poucas das funcionalidades de um aplicativo importante como o whatsapp por mim.

O aplicativo continua na playstore, mas em um dia auspicioso Parse anuncia que eles vão fechar Parse após serem adquiridos pelo Facebook dentro de alguns meses. Eu não planejava mover o aplicativo para outro serviço, pois de qualquer forma ele não tinha nenhum usuário. Eu havia desistido, mas meu parceiro não (parceiro não-técnico). Então, olhando para ele eu decidi, ok, deixe-me dar outra olhada nele. Agora eu nem vou ser capaz de entender o que o monstro codificou naquele momento, mas estou pronto para enfrentá-lo. Por dois dias eu ficaria atordoado com a bagunça que fiz, mas aos poucos fui pegando e melhorando.

Então comecei a procurar por opções. A primeira coisa que veio na minha opinião foi GCM/FCM(Google Cloud Messaging/Firebase Cloud Messaging). Mesmo quando eu estava usando parse tentei usar o GCM. Havia um formulário de registro naquela época para poder usar o GCM e eu nunca recebi uma resposta do Google que me permitisse usá-lo. Mesmo assim, tentei ver a documentação deles. É puro horror para mim, pois não tinha idéia do protocolo HTTP ou XMPP e, portanto, não consegui fazer sentido. Recentemente eu voltei a ele, mas agora eu estou equipado com o conhecimento do HTTP, portanto passar pela parte HTTP da documentação tem sido uma brisa para mim. E também não existe um formulário de registro, você pode ter acesso direto às credenciais do GCM. Eu sou capaz de conseguir uma notificação push na aplicação android. Agora eu queria tentar usar o XMPP mas ainda demorei cerca de 2-3 dias para entender o que significa GCM com XMPP.

Neste momento você pode estar confuso sobre o que é HTTP e o que é XMPP

>ul>>li>HTTP:- É o protocolo que alimenta a web padrão e, portanto, o protocolo mais popular. Ele pode ser usado junto com o GCM para enviar notificações push. O processo é este, você implementa um servidor web usando qualquer framework da sua escolha Node.js/Django/Ruby on Rails/Laravel etc. Cada dispositivo android recebe um único gcm_id que pode ser armazenado no servidor. Se o servidor enviar um pedido HTTP para o GCM url com o id de registro do seu dispositivo, você estaria recebendo uma notificação. O processo é muito simples de implementar. No lado do servidor eu usei python-gcm (suporta apenas GCM HTTP) junto com o Django para lidar com os pedidos HTTP.main-qimg-94dfc1e384ca8646ef5bbed7ea67cf97.webp
  • XMPP :- É o protocolo que é usado principalmente para aplicações de mensagens e, portanto, não é tão popular quanto o HTTP. Sua latência é considerada menor do que quando se usa GCM com HTTP e, portanto, é usado em aplicações críticas de velocidade, como o Instant Messaging. O XMPP com GCM suporta tanto mensagens downstream, ou seja, envio de notificação push do servidor para a aplicação android e mensagens upstream, ou seja, envio de mensagens da aplicação android para o servidor e há um servidor Google no meio do qual age como um homem do meio. Para implementar o XMPP com o GCM é necessário fazer uma conexão XMPP com o endpoint do Google. Então é necessário iniciar um cliente XMPP e conectá-lo ao endpoint do Google em seu servidor. A conexão com o servidor do google precisa estar sempre viva. Agora sempre que a sua aplicação android envia uma mensagem para o endpoint do Google o seu servidor recebe-a e vice-versa.
main-qimg-55d62cda19f07572c5173dbeb0d2e456.webp

Durante muitos dos dias eu estava confuso com este servidor e cliente XMPP e o que tem de ser implementado para usar com o GCM. Tentei muitas vezes, mas como o Google está cheio de discussões, sempre tive que desistir, pois depois de algum tempo eu nunca soube o que estava fazendo. Então deixe-me explicar as diferenças entre servidor e cliente XMPP aqui

  1. XMPP Server :- Se você não quer usar o GCM para enviar mensagens você pode criar um servidor XMPP próprio. Eu ainda sou ingênuo nesta parte e estou começando a usá-lo, por isso não posso dizer muitas coisas sobre ele. Atualmente estou passando por este livro XMPP: The Definitive Guide Book para começar a implementar um servidor XMPP. Seu aplicativo android abre uma conexão com este servidor XMPP e pode usá-lo para envio de mensagens. Uma desvantagem é que você sempre tem que manter uma conexão com o servidor para poder receber mensagens que podem drenar sua bateria.
  2. XMPP Client :- Esta é a parte que é usada no GCM. Os clientes HTTP são muito difundidos, mas os clientes XMPP são poucos em número. Para Java o preferido é o Smack e para python felizmente eu poderia encontrar um em xmpppy. Agora suponha que você queira enviar uma mensagem de um telefone android para outro o caminho é como este telefone Android 1 -> Google -> cliente XMPP mantido no seu servidor -> Google -> dispositivo Android 2.
>p> Agora você pode perguntar qual é a necessidade do servidor XMPP quando o GCM sozinho pode lidar com a parte de mensagens. Embora o GCM seja bom o suficiente na maioria das vezes ele não é considerado confiável. Há muitos desenvolvedores que reclamaram que o aplicativo não recebeu a notificação do GCM poucas vezes. Então todos os grandes jogadores, como o Whatsapp, fazem isso. Eles não usam o GCM como o serviço principal para o seu mensageiro instantâneo. Em vez disso, eles hospedam seu próprio servidor XMPP para o envio de mensagens. Sempre que o aplicativo android é morto e, portanto, a conexão do XMPP é morta, agora se o servidor precisa enviar uma mensagem para o dispositivo offline eles usam o GCM para enviar uma notificação push. Agora, quando o usuário clica em uma notificação push, o aplicativo é aberto e faz uma conexão com o servidor XMPP e busca todas as mensagens pendentes. Então eles usam o GCM apenas para sincronizar as mensagens mas não para serviços de mensagens mainstream.

XMPP não é a única opção para mensagens instantâneas. Muitas pessoas também usaram sockets, mas eu nunca os usei, então eu me abstenho de comentar sobre eles.

De Lenhard Pattyre

Como exportar listas de reprodução para segurança :: Porque é que os telemóveis de marca chinesa estão a ganhar mais popularidade na Índia?