Tutorial: Enviar notificações por push para dispositivos Android usando o SDK do Firebase versão 1.0.0-preview1
Este tutorial mostra como usar os Hubs de Notificação do Azure e a versão atualizada do SDK do FCM (Firebase Cloud Messaging) (versão 1.0.0-preview1) para enviar notificações por push para um aplicativo Android. Neste tutorial, você criará um aplicativo do Android em branco que receberá notificações por push por meio do FCM (Firebase Cloud Messaging).
Importante
A partir de junho de 2024, as APIs herdadas do FCM não terão mais suporte e serão desativadas. Para evitar qualquer interrupção no serviço de notificação por push, você precisa migrar para o protocolo FCM v1 o mais rápido possível.
Baixe o código completo deste tutorial no GitHub.
Este tutorial cobre as seguintes etapas:
- Criar um projeto do Android Studio.
- Criar um projeto do Firebase que ofereça suporte ao Firebase Cloud Messaging.
- Criar um hub de notificação.
- Conectar seu aplicativo ao hub.
- Testar o aplicativo.
Pré-requisitos
Para concluir este tutorial, você precisa ter uma conta ativa do Azure. Se não tiver uma conta, você poderá criar uma conta de avaliação gratuita em apenas alguns minutos. Para obter detalhes, consulte Avaliação gratuita do Azure.
Observação
Não há suporte para APIs do Google/Firebase nas regiões do Azure China.
Você também precisará dos seguintes itens:
- Recomendamos usar a última versão do Android Studio.
- O suporte mínimo é o nível da API 19.
Criar um projeto do Android Studio
A primeira etapa é criar um projeto no Android Studio:
Inicie o Android Studio.
Selecione Arquivo, escolha Novo e Novo Projeto.
Na página Escolher o projeto, selecione Atividade vazia e, em seguida, selecione Avançar.
Na página Configurar o projeto, faça o seguinte:
- Insira um nome para o aplicativo.
- Especifique um local para salvar os arquivos do projeto.
- Selecione Concluir.
Crie um projeto do Firebase que ofereça suporte ao FCM
Faça logon no console do Firebase. Crie um novo projeto do Firebase se você ainda não tiver um.
Depois de criar seu projeto, selecione Adicionar Firebase ao seu aplicativo Android.
Na página Adicionar o Firebase ao seu aplicativo Android, faça o seguinte:
Em Nome do pacote Android, copie o valor da applicationId no arquivo build.gradle do aplicativo. Neste exemplo, é
com.fabrikam.fcmtutorial1app
.Selecione Registrar aplicativo.
Selecione Baixar google-services.json, salve o arquivo na pasta app do projeto e, em seguida, selecione Avançar.
No console do Firebase, selecione a engrenagem para seu projeto. Em seguida, selecione Configurações do Projeto.
Se você não tiver baixado o arquivo google-services.json para a pasta aplicativo do projeto do Android Studio, será possível fazer isso nesta página.
Alterne para a guia Cloud Messaging.
Copie e salve a Chave do servidor para uso posterior. Use esse valor para configurar o hub.
Se você não vir uma Chave do servidor na guia Mensagens na Nuvem do Firebase, siga estas etapas:
- Clique no menu de três pontos do título API de Mensagens na Nuvem (Herdada) Desabilitada.
- Siga o link para Gerenciar a API no Console do Google Cloud.
- No Console do Google Cloud, selecione o botão para habilitar a API do Google Cloud Messaging.
- Aguarde alguns minutos.
- Volte à guia Cloud Messaging do projeto do console do Firebase e atualize a página.
- Veja que o cabeçalho da API de Mensagens na Nuvem foi alterado para API de Mensagens na Nuvem (Herdada) Habilitada e agora mostra uma chave do servidor.
Configurar um hub de notificação
Entre no portal do Azure.
Selecione Todos os serviços no menu à esquerda e Hubs de Notificação na seção Móvel. Selecione o ícone de estrela ao lado do nome do serviço para adicionar o serviço na seção FAVORITOS no menu à esquerda. Depois de adicionar os Hubs de Notificação a FAVORITOS, selecione-o no menu à esquerda.
Na página Hubs de Notificação, selecione Adicionar na barra de ferramentas.
Na página Hubs de Notificação, faça o seguinte:
Insira um nome em Hub de Notificação.
Insira um nome em Criar um namespace. Um namespace contém um ou mais hubs.
Selecione um valor na lista suspensa Localização. Esse valor especifica a localização na qual você deseja criar o hub.
Selecione um grupo de recursos existente em Grupo de Recursos ou crie um.
Selecione Criar.
Selecione Notificações (ícone de sino) e selecione Acessar recurso. Atualize também a lista na página Hubs de Notificação e, em seguida, selecione seu hub.
Selecione Políticas de Acesso na lista. Observe que duas cadeias de conexão estão disponíveis. Você precisará delas para manipular notificações por push mais tarde.
Importante
Não use a política DefaultFullSharedAccessSignature no aplicativo. Essa política deverá ser usada somente no back-end do aplicativo.
Definir as configurações do Firebase Cloud Messaging para o hub
No painel esquerdo, em Configurações, selecione Google (GCM/FCM) .
Insira a chave do servidor do projeto do FCM, salva anteriormente.
Na barra de ferramentas, selecione Salvar.
O portal do Azure exibirá uma mensagem informando que o hub foi atualizado com êxito. O botão Salvar está desabilitado.
O hub de notificação agora está configurado para trabalhar com o Firebase Cloud Messaging. Você também tem as cadeias de caracteres de conexão que são necessárias para enviar notificações para um dispositivo e registrar um aplicativo para receber notificações.
Conectar seu aplicativo ao hub de notificação
Adicionar serviços do Google Play ao projeto
No Android Studio, selecione Ferramentas no menu e selecione Gerenciador do SDK.
Selecione a versão de destino do SDK do Android que é usada em seu projeto. Em seguida, selecione Mostrar detalhes do pacote.
Selecione APIs do Google, caso ainda não estejam instaladas.
Alterne para a guia SDK Tools. Caso ainda não tenha instalado o Google Play Services, selecione Google Play Services, conforme mostrado na imagem a seguir. Em seguida, selecione Aplicar para instalar. Anote o caminho do SDK, a ser usado em uma etapa posterior.
Se a caixa de diálogo Confirmar Alteração for exibida, selecione OK. O instalador de componentes instalará os componentes solicitados. Selecione Concluir depois que os componentes forem instalados.
Selecione OK para fechar a caixa de diálogo Configurações para Novos Projetos.
Adicionar bibliotecas de Hubs de Notificação do Azure
No arquivo build.gradle do aplicativo, adicione as seguintes linhas à seção de dependências:
implementation 'com.microsoft.azure:notification-hubs-android-sdk-fcm:1.1.4' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.android.volley:volley:1.2.1'
Adicione o seguinte repositório após a seção de dependências:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() maven { url 'https://example.io' } } }
Adicionar suporte ao Google Firebase
Adicione o plug-in a seguir ao final do arquivo, caso ele ainda não esteja lá.
apply plugin: 'com.google.gms.google-services'
Selecione Sincronizar Agora na barra de ferramentas.
Incluir código
Crie um objeto NotificationHubListener, que processa a interceptação das mensagens dos Hubs de Notificação do Azure.
public class CustomNotificationListener implements NotificationListener { @override public void onNotificationReceived(Context context, RemoteMessage message) { /* The following notification properties are available. */ Notification notification = message.getNotification(); String title = notification.getTitle(); String body = notification.getBody(); Map<String, String> data = message.getData(); if (message != null) { Log.d(TAG, "Message Notification Title: " + title); Log.d(TAG, "Message Notification Body: " + message); } if (data != null) { for (Map.Entry<String, String> entry : data.entrySet()) { Log.d(TAG, "key, " + entry.getKey() + " value " + entry.getValue()); } } } }
No método
OnCreate
da classeMainActivity
, adicione o seguinte código para começar o processo de inicialização dos Hubs de Notificação quando a atividade for criada:@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NotificationHub.setListener(new CustomNotificationListener()); NotificationHub.start(this.getApplication(), "Hub Name", "Connection-String"); }
No Android Studio, na barra de menus, selecione Compilar e Recompilar Projeto para verificar se não há erros no código. Se você receber um erro sobre o ícone ic_launcher, remova a seguinte instrução do arquivo AndroidManifest.xml:
android:icon="@mipmap/ic_launcher"
Verifique se você tem um dispositivo virtual para executar o aplicativo. Se não tiver um, adicione da seguinte maneira:
Execute o aplicativo no dispositivo selecionado e confirme se ele foi registrado com êxito no hub.
Observação
O registro poderá falhar na primeira inicialização até que o método
onTokenRefresh()
do serviço de ID da instância seja chamado. Uma atualização deverá iniciar um registro bem-sucedido no hub de notificação.
Enviar uma notificação de teste
Envie notificações por push ao hub de notificações por no portal do Azure da seguinte maneira:
No portal do Azure, na página do hub de notificações do hub, selecione Envio de Teste na seção Solução de Problemas.
Em Plataformas, selecione Android.
Selecione Enviar. Você ainda não verá a notificação no dispositivo Android porque não executou o aplicativo móvel nele. Depois de executar o aplicativo móvel, selecione o botão Enviar novamente para ver a mensagem de notificação.
Confira o resultado da operação na lista na parte inferior da página do portal.
Você verá a mensagem de notificação no dispositivo.
As notificações por push normalmente são enviadas em um serviço de back-end como Aplicativos Móveis ou ASP.NET usando uma biblioteca compatível. Se uma biblioteca não estiver disponível para o seu back-end, você também poderá usar a API REST diretamente para enviar mensagens de notificação.
Executar o aplicativo móvel no emulador
Antes de testar notificações por push em um emulador, verifique se a imagem do emulador dá suporte ao nível de API do Google que você escolheu para o aplicativo. Se a imagem não der suporte às APIs nativas do Google, você poderá receber a exceção SERVICE_NOT_AVAILABLE.
Além disso, verifique se você adicionou a conta do Google ao emulador em execução em Configurações>Contas. Caso contrário, suas tentativas de se registrar no FCM poderão resultar na exceção AUTHENTICATION_FAILED.
Próximas etapas
Neste tutorial, você usou o Firebase Cloud Messaging para difundir notificações a todos os dispositivos Android que estavam registrados no serviço. Para saber como enviar notificações por push a dispositivos específicos, avance ao seguinte tutorial:
Esta é uma lista de alguns outros tutoriais sobre como enviar notificações:
Aplicativos Móveis do Azure: para obter um exemplo de como enviar notificações de um back-end de Aplicativos Móveis integrado aos Hubs de Notificação, confira Adicionar notificações por push ao seu aplicativo iOS.
ASP.NET: use os Hubs de Notificação para enviar notificações por push aos usuários.
SDK do Java para Hubs de Notificação do Azure: confira Como usar os Hubs de Notificação do Java para enviar notificações do Java. Isso foi testado no Eclipse para desenvolvimento no Android.