1. Introdução
Em comparação com a API legada do FCM, a API FCM HTTP v1 oferece um modelo de autorização mais seguro usando tokens de acesso de curta duração. As etapas para gerar o token de acesso para a API FCM v1 são significativamente diferentes das etapas para a API legada.
Este codelab orienta você pelo processo de configuração do cliente e do servidor para ativar o envio de notificações push para um app Android usando a API HTTP v1 do FCM. Ele destaca a etapa principal da geração de credenciais para a API v1.
Confira mais informações em:
Pré-requisitos
- Conhecimento básico de desenvolvimento Java e Android
O que você vai aprender
- Etapas detalhadas de configuração do cliente e do servidor para ativar o envio de notificações push para o app Android usando a API HTTP v1 do FCM
- Geração de credenciais para a API HTTP v1 usando contas de serviço
- Como enviar mensagens de teste pela API HTTP v1
Pré-requisitos
Versão estável mais recente do Android Studio.
Um dos seguintes dispositivos:
- Um dispositivo Android físico conectado ao seu computador
- Um Android Emulator. Consulte Executar apps no Android Emulator.
Um ambiente de desenvolvimento Java ou editor de código de sua escolha
2. Configuração do projeto do Firebase e do app Android
Ao final do codelab, você poderá enviar mensagens para seu app usando o Firebase Cloud Messaging. Antes de fazer isso, você precisará criar um projeto do Firebase. Este codelab também fornece um app Android com um exemplo de código para integração com o FCM.
Configuração do projeto do Firebase
- Siga a "Etapa 1: Criar um projeto do Firebase" para criar seu próprio projeto do Firebase para este codelab.
Configuração do app Android
O app Android de exemplo fornecido neste codelab já está integrado ao FCM. Depois de iniciar, ele vai se registrar no servidor do FCM e se inscrever em um tópico. Nas próximas etapas deste codelab, você enviará uma mensagem para o tópico e seu app a receberá.
- Faça o download do exemplo de início rápido do Firebase para Android.
- Importe o projeto em https://github.com/firebase/quickstart-android/tree/master/messaging (em inglês) para o Android Studio.
- Registre o app no console do Firebase. O nome do app é
com.google.firebase.quickstart.fcm
. Registre esse app no seu projeto do Firebase seguindo as etapas da "Etapa 2: registrar seu app com o Firebase". nesta seção. - Siga a parte 1 da "Etapa 3: Adicionar um arquivo de configuração do Firebase" para fazer o download de
google-services.json
e adicioná-lo ao seu projeto. Crie e execute o projeto.
3. Configurar o servidor de apps
Agora que o app está configurado, você precisa fazer o download de um exemplo de código do lado do servidor para enviar mensagens ao app usando a API FCM v1. Esse código carrega as credenciais da API (descritas na próxima seção) para gerar um token de acesso. Em seguida, ele envia uma mensagem para seu app usando as mensagens de tópico do FCM.
- Importe o código do servidor inicial fazendo o download do projeto do GitHub. A "mensagem" é um projeto Java baseado em Gradle com uma dependência no SDK firebase-admin, que oferece funcionalidade para enviar mensagens.
Confira mais detalhes sobre como um servidor de apps deve funcionar com o FCM no documento Seu ambiente de servidor e o FCM.
4. Receber credenciais da v1
A API FCM HTTP v1 usa tokens de acesso de curta duração de acordo com o modelo de segurança OAuth2. Comparado à chave de API estática usada na API legada do FCM, o token de acesso de curta duração é menos suscetível ao risco de vazamento de credenciais. Esta seção detalha as etapas para criar uma credencial para gerar o token de acesso usado na chamada da API.
- Configure uma conta de serviço do Firebase para permitir que o SDK Admin do Firebase autorize chamadas para APIs do FCM. Abra as Configurações do projeto no Console do Firebase e selecione a guia Contas de serviço. Clique em Gerar nova chave privada para fazer o download do snippet de configuração.
- No projeto do GitHub salvo, renomeie o arquivo salvo como
service-account.json
e copie-o para o caminhomessaging/
do projeto. - O método
getAccessToken()
(mostrado abaixo) na classeMessaging.java
gera um token OAuth2 válido por uma hora.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Mude o método principal para adicionar a seguinte linha:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Acesse o diretório de mensagens/ projeto no seu terminal e digite:
./gradlew run -Pmessage=common-message
para imprimir o token OAuth2.
Confira mais informações em Autorizar solicitações de envio.
5. Enviar uma mensagem com a API REST
Agora você já pode enviar uma mensagem pela API HTTP v1. Siga as etapas abaixo:
- Para adicionar o token de acesso a um cabeçalho de solicitação HTTP:
- Adicione o token como o valor do cabeçalho de autorização no formato
Authorization: Bearer <access_token>
- Faça uma solicitação HTTP para a API FCM v1 usando curl:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
O $topic_name
acima pode ser encontrado no código do app Android mencionado no projeto do Firebase e na configuração do app Android. Por padrão, ele é "weather"
.
- Depois que uma mensagem for entregue, uma notificação vai aparecer na tela, semelhante à imagem abaixo:
6. Conclusão
Parabéns! Você concluiu o codelab para:
- Configurar um projeto do Firebase
- Integrar o Firebase a um app Android
- Criar credenciais para a API FCM HTTP v1
- Enviar uma mensagem para seu app usando a API FCM HTTP v1
Para explorar os recursos avançados que o FCM oferece, as seguintes referências são úteis: