O que é Push Notification?

(Last Updated On: 30 de Março de 2017)

No projeto (de teste) para a casa do código desenvolvido pelo instrutor Matheus Brandino, temos uma App Android que permitirá que os usuários consigam realizar compras via celular. A primeira tela para essa App é justamente exibir todos os livros disponíveis na Casa do Código:

projeto-cdc-tela-principal

Atualmente, para que o cliente consiga verificar se tem algum livro novo disponível para compra, ele precisa ir no menu e escolher a opção “novidades”.

projeto-cdc-menu

Podemos ver claramente o fluxo dessa funcionalidade a partir do diagrama abaixo:

diagrama_de_cliente_servidor

A princípio, não há problema, certo? Entretanto, para o usuário, faz sentido ele ter que ficar verificando todas as vezes se existe um novo livro? E se não tiver um livro novo? Vai ficar perdendo tempo… Além de ser cansativo, temos 2 pontos mais graves nessa funcionalidade:

  • Consumo de dados: Todas as vezes precisará fazer uma nova requisição ao servidor, ou seja, consumirá seus dados a cada requisição
  • Consumo de bateria: Todas as vezes precisará abrir a App e escolher o menu novidades

Considerando apenas esses 2 problemas, qual solução você daria?

Que tal criar um sistema de notificação? Aparentemente, é uma ótima solução, porém, como faríamos isso? Adicionaríamos uma task em background para ficar rodando em intervalos e ficar consultando o servidor?

É uma possível “solução”, porém, ainda não resolve totalmente o nosso problema, pois ainda estaremos consumindo os dados e a bateria do usuário de acordo com o intervalo que configurarmos para realizar as requisições. Podemos até mesmo pensar que, “aumentar o intervalo da task pode diminuir esse problema”.

Pode até diminuir os problemas citados acima, entretanto, se, por exemplo, a casa do código lançar um novo livro com algum tipo de promoção imperdível e temporária, e então, devido ao longo intervalo para realizar as verificações, o nosso sistema de notificação não faz a requisição ao servidor e, durante esse tempo, a promoção se esgota… Será que o nosso usuário ficará contente? Provavelmente não…

Além disso, imagine se existir milhares de usuários com a App instalada, e, por alguma coincidência, o sistema de notificação de cada celular fizer a verificação ao mesmo tempo. Com certeza correremos um grande risco do nosso sistema receber diversas requisições e entrar num estado de pico ou até mesmo cair.

Em outras palavras, com essa “solução”, sem querer, podemos realizar algo bem similar a um DDoS no nosso sistema, ou seja, derrubar o nosso servidor devido a uma quantidade de carga maior do que ele suporta.

Então como poderíamos resolver esse problema? Que tal, ao invés da própria App requisitar o servidor, fazer com que ela seja o receptor, e então, o servidor mandar as requisições para a App? Por exemplo:

diagrama_server_cliente

Observe que no diagrama acima, o servidor que está enviando uma mensagem para o cliente, ou seja, ele que está mandando requisições para o cliente. Será que isso é possível? Sim, é possível! 😀

Essa abordagem de fazer com que a App seja receptora, isto é, fique esperando requisições, chamamos de Push Notification. Atualmente, existem algumas plataformas que nos oferecem esses serviços mensageiros como o GCM (Google Cloud Messaging), porém, esse mesmo serviço ~~está sofrendo~~ sofreu um upgrade para o Firebase.

E aí, o que achou do push notification? Está ansioso para implementá-lo na sua App? Então dê uma olhada no post tutorial onde mostro, passo-a-passo, como podemos configurar o Firebase e integrar um Push Notification em uma App Android.

Que tal aprender a desenvolver uma App Android desde o zero hoje mesmo? Na Alura, temos diversos cursos online de Android, onde você será capaz de construir suas próprias Apps do começo ao fim!

Content Editor at Alura and Software Developer

Próximo ArtigoFórum funcionando a todo vapor