Notificação push do Android usando o Firebase e o cliente REST avançado

Vikas Tomar Blocked Desbloquear Seguir Seguindo 14 de dezembro de 2018 Foto por Jamie Street em Unsplash

Depois de passar quatro dias fazendo malabarismos entre vários recursos, escrevendo códigos e apagando-os de novo e de novo, finalmente aprendi a implementar com sucesso o Push Notification no Android usando o Firebase e o ARC de uma maneira não tão complexa. Continue enquanto acompanho o processo.

Então, antes de entrarmos na codificação e no material, vamos desenvolver uma compreensão básica do que são notificações e como elas funcionam.

Visão geral de notificações

Uma notificação é uma mensagem que o Android exibe fora da interface do usuário do seu aplicativo para fornecer ao usuário lembretes, comunicação de outras pessoas ou outras informações oportunas do seu aplicativo. Os usuários podem tocar na notificação para abrir seu aplicativo ou realizar uma ação diretamente da notificação.

O design de uma notificação é determinado pelos modelos do sistema – seu aplicativo simplesmente define o conteúdo de cada parte do modelo. Alguns detalhes da notificação aparecem apenas na exibição expandida.

As partes mais comuns de uma notificação são indicadas na figura 7 da seguinte forma:

Anatomia da Notificação

  1. Ícone pequeno: isso é necessário e definido com setSmallIcon() .
  2. Nome do aplicativo: isso é fornecido pelo sistema.
  3. Carimbo de data / hora: Isso é fornecido pelo sistema, mas você pode substituir com setWhen() ou ocultá-lo com setShowWhen(false) .
  4. Ícone grande: é opcional (geralmente usado apenas para fotos de contato; não o use para o ícone do aplicativo) e definido com setLargeIcon() .
  5. Título: Isto é opcional e definido com setContentTitle() .
  6. Texto: Isto é opcional e definido com setContentText() .

Para obter mais informações sobre como criar uma notificação com esses recursos e mais, leia Criar uma notificação .

Usando o Firebase Cloud Messaging, você pode enviar três tipos de mensagens, ou seja, mensagem de notificação , mensagem de dados e mensagem com notificação e carga de dados .

1. Mensagem de Notificação:

As mensagens de notificação são tratadas pelo próprio firebase SDK. Normalmente, a mensagem de notificação contém um título, uma mensagem, um ícone, etc. Essas mensagens podem ser enviadas pela interface do usuário do Firebase Console . Ao enviar esse tipo de mensagem, você não terá muito controle sobre a notificação. A notificação será mostrada automaticamente quando o aplicativo estiver em segundo plano.

2. Mensagem de Dados:

As mensagens de dados precisam ser manipuladas pelo aplicativo para Android. Você pode adicionar esse tipo de mensagem se quiser enviar alguns dados adicionais junto com a notificação. Mas o envio dessas mensagens pelo console do Firebase não é possível . Você precisa ter uma lógica do lado do servidor para enviar a notificação usando a API do Firebase. Você precisa usar a chave de dados ao enviar esta mensagem.

3. Mensagens com notificação e carga de dados:

Uma mensagem também pode conter notificação e carga de dados. Quando esses tipos de mensagens são enviados, eles serão tratados em dois cenários, dependendo do estado do aplicativo (plano de fundo / primeiro plano). Para essas mensagens, podemos usar as chaves de notificação e de dados.

Quando em segundo plano – o aplicativo recebe a carga de notificação na bandeja de notificação e manipula apenas a carga de dados quando o usuário toca na notificação.

Quando em primeiro plano – o aplicativo recebe um objeto de mensagem com as duas cargas disponíveis.

Vamos codificar

Primeiramente, crie uma nova atividade vazia do projeto e adicione as dependências do Firebase para o Cloud Messaging. Você pode encontrar as dependências mais recentes nos Documentos do desenvolvedor do Android do Cloud Messaging aqui . Ou você pode seguir o caminho mais fácil adicionando a integração do Firebase e do sistema de mensagens na nuvem diretamente no Android Studio. Vá para Ferramentas> FIrebase, selecione Cloud Messaging e configure-a.

Depois de concluir a configuração do Firebase, começaremos com a parte de codificação.

Crie dois pacotes, Congif e Serviços. Agora adicione as seguintes classes Java:

  • Config : Config.java
  • Serviços : MyFirebaseInstanceService.java e MyFirebaseMessagingService.java

Criando novas classes.

Config.java

Essa classe é um tipo de classe auxiliar usada para armazenar algumas informações úteis recuperadas de dados recebidos do servidor. É opcional criar essa classe, mas sugiro que você crie uma para melhorar a capacidade de compreensão do aplicativo. Esta informação é usada no aplicativo em vários lugares, como exibir o título da notificação, o conteúdo da notificação, a imagem etc.

Configure esta classe da seguinte forma:

MyFirebaseInstanceService.java

Na inicialização do seu aplicativo, o SDK do FCM gera um token de registro para a instância do aplicativo cliente. Se você deseja segmentar dispositivos únicos ou criar grupos de dispositivos, precisará acessar esse token.

Você pode acessar facilmente o valor do token criando uma nova classe que amplia o FirebaseInstanceIdService . Nessa classe, chame getToken no onTokenRefresh e registre o valor conforme mostrado:

O retorno de chamada onTokenRefress () é acionado sempre que um novo token é gerado.

Além disso, adicione os serviços ao seu arquivo de manifesto na seção <activity>:

 <serviço 
android: name = ”. MyFirebaseInstanceIDService”>
<filtro de intenção>
<ação android: name = ”com.google.firebase.INSTANCE_ID_EVENT” />
</ filtro intent>
</ service>

Agora vamos para a parte real.

MyFirebaseMessagingService.java

Se você deseja fazer qualquer tratamento de mensagem além de receber notificações sobre aplicativos em segundo plano, precisamos criar este serviço para criar este serviço. Estende o FirebaseMesasagingService. Esse serviço é necessário para receber notificações em aplicativos em primeiro plano, para receber carga de dados, para enviar mensagens ascendentes e assim por diante.

Deixe-me explicar-lhe passo a passo o que vamos fazer neste

  1. Primeiro de tudo, vamos criar um método onMessageRecieved () para lidar com as mensagens recebidas.
  2. Vamos verificar se a mensagem contém alguns dados, se sim, vamos encaminhá-la para o próximo método, ou seja, getImage ().
  3. Nesse método, recupere algumas informações úteis da mensagem e adicione-as à variável da classe Config . Além disso, buscaremos uma imagem para ser exibida na notificação usando a biblioteca do Piccaso.
  4. Depois que a imagem for buscada, ela será passada para o método sendNotification () e exibiremos a notificação.

Não esqueça de adicionar a dependência da biblioteca Picasso:

 implementação 'com.google.firebase: firebase-messaging: 11.0.4' 

Código para a classe:

Finalmente, terminamos com a parte de codificação.

Agora vamos passar para a parte Advanced REST Client.

Cliente REST Avançado

Abra o Google Chrome e faça o download da extensão Advanced REST Client na Chrome Web Store. O ARC é um programa auxiliar para criar e testar solicitações HTTP personalizadas.

Uma vez baixado, configure o ARC da seguinte maneira:

Configurando o ARC

  • Para encontrar sua chave do servidor ou chave de autorização, acesse a configuração do projeto do Firebase -> Cloud Messaging-> ServerKey.

Depois de configurar os cabeçalhos, vá para a guia Corpo e configure-o da seguinte forma:

Configurando o Corpo ARC

Você pode copiar a parte JSON abaixo:

{
"Data": {
"Título": "Hey",
"Conteúdo": "Confira este jogo incrível!",
"ImageUrl": " http://h5.4j.com/thumb/Ninja-Run.jpg ",
"GameUrl": " https://h5.4j.com/Ninja-Run/index.php?pubid=noad "
}
“To”: “/ topics / all”
}

Esse JSON contém a carga de dados que nossa mensagem do servidor para o dispositivo conterá e será usada para exibir a notificação. Todas as teclas são autoexplicativas, exceto a tecla “para” .

Vamos nos concentrar neste último par de valores-chave "para" por um tempo. Esse par de valores-chave especifica para quem vamos enviar as notificações. Podemos estar segmentando uma única pessoa, um segmento de usuários de nosso aplicativo ou toda a base de usuários de nosso aplicativo.

Caso desejemos enviar a notificação para um único usuário, substituiremos o valor "to" pelo token gerado pelo dispositivo do usuário.

Caso desejemos enviar notificações para todos os usuários, basta deixar o valor "para" como está no código. Além disso, precisamos adicionar a seguinte linha à nossa classe MyFirebaseInstanceService.java :

 FirebaseMessaging. getInstance () .subscribeToTopic (“all”); 

Você sempre pode ler mais sobre o tópico de mensagens aqui .

Agora pressione o botão POST para receber as notificações.

A aparência de notificações recebidas.

É isso aí. Agora, permita que seus usuários saibam sua presença e os mantenham envolvidos com seu aplicativo. Até o próximo burburinho …

Conclusão

Enviar notificação para um grupo de pessoas não é tarefa tão difícil quanto parece. Entender o trabalho por trás e ler os Documentos do desenvolvedor Android do Google certamente lhe dará uma vantagem, mas, às vezes, pode não fornecer a solução ideal que você está procurando. Espero que este artigo tenha ajudado você a facilitar a tarefa de enviar notificações.

Recursos:

  1. https://developer.android.com/guide/topics/ui/notifiers/notifications
  2. https://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/
  3. https://www.youtube.com/watch?v=82uwhCj3zuI

Deixe-me saber sobre quaisquer erros que eu cometi ou qualquer conceito que eu tenha esquecido. Críticas e melhorias são sempre bem-vindas.