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).

Observação

Para obter informações sobre as etapas de substituição e migração do Firebase Cloud Messaging, confira Migração do Google Firebase Cloud Messaging.

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:

  1. Inicie o Android Studio.

  2. Selecione Arquivo, escolha Novo e Novo Projeto.

  3. Na página Escolher o projeto, selecione Atividade vazia e, em seguida, selecione Avançar.

  4. Na página Configurar o projeto, faça o seguinte:

    1. Insira um nome para o aplicativo.
    2. Especifique um local para salvar os arquivos do projeto.
    3. Selecione Concluir.

    Configurar o projeto

Crie um projeto do Firebase que ofereça suporte ao FCM

  1. Faça logon no console do Firebase. Crie um novo projeto do Firebase se você ainda não tiver um.

  2. Depois de criar seu projeto, selecione Adicionar Firebase ao seu aplicativo Android.

    Adicionar Firebase

  3. Na página Adicionar o Firebase ao seu aplicativo Android, faça o seguinte:

    1. Em Nome do pacote Android, copie o valor da applicationId no arquivo build.gradle do aplicativo. Neste exemplo, é com.fabrikam.fcmtutorial1app.

      Especificar o nome do pacote

    2. Selecione Registrar aplicativo.

  4. Selecione Baixar google-services.json, salve o arquivo na pasta app do projeto e, em seguida, selecione Avançar.

    Baixar o serviço do Google

  5. No console do Firebase, selecione a engrenagem para seu projeto. Em seguida, selecione Configurações do Projeto.

    Configurações do projeto

  6. 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.

  7. Alterne para a guia Cloud Messaging.

  8. Copie e salve a Chave do servidor para uso posterior. Use esse valor para configurar o hub.

  9. Se você não vir uma Chave do servidor na guia Mensagens na Nuvem do Firebase, siga estas etapas:

    1. Clique no menu de três pontos do título API de Mensagens na Nuvem (Herdada) Desabilitada.
    2. Siga o link para Gerenciar a API no Console do Google Cloud.
    3. No Console do Google Cloud, selecione o botão para habilitar a API do Google Cloud Messaging.
    4. Aguarde alguns minutos.
    5. Volte à guia Cloud Messaging do projeto do console do Firebase e atualize a página.
    6. 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.

    Captura de tela do portal mostrando Habilitar API de Mensagens na Nuvem (Herdada).

Configurar um hub de notificação

  1. Entre no portal do Azure.

  2. 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.

  3. Na página Hubs de Notificação, selecione Adicionar na barra de ferramentas.

    Adicionar hub

  4. Na página Hubs de Notificação, faça o seguinte:

    1. Insira um nome em Hub de Notificação.

    2. Insira um nome em Criar um namespace. Um namespace contém um ou mais hubs.

    3. Selecione um valor na lista suspensa Localização. Esse valor especifica a localização na qual você deseja criar o hub.

    4. Selecione um grupo de recursos existente em Grupo de Recursos ou crie um.

    5. Selecione Criar.

      Criar o hub

  5. 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.

    Selecionar o hub

  6. 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.

    Políticas de acesso

    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

  1. No painel esquerdo, em Configurações, selecione Google (GCM/FCM) .

  2. Insira a chave do servidor do projeto do FCM, salva anteriormente.

  3. Na barra de ferramentas, selecione Salvar.

    Chave do servidor

  4. 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

  1. No Android Studio, selecione Ferramentas no menu e selecione Gerenciador do SDK.

  2. Selecione a versão de destino do SDK do Android que é usada em seu projeto. Em seguida, selecione Mostrar detalhes do pacote.

    Gerenciador de SDK

  3. Selecione APIs do Google, caso ainda não estejam instaladas.

    APIs

  4. 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.

    Play Services

  5. 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.

  6. Selecione OK para fechar a caixa de diálogo Configurações para Novos Projetos.

Adicionar bibliotecas de Hubs de Notificação do Azure

  1. 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'
    
  2. Adicione o seguinte repositório após a seção de dependências:

    repositories {
       maven {
          url "https://dl.bintray.com/microsoftazuremobile/SDK"
       }
    }
    

Adicionar suporte ao Google Firebase

  1. Adicione o plug-in a seguir ao final do arquivo, caso ele ainda não esteja lá.

    apply plugin: 'com.google.gms.google-services'
    
  2. Selecione Sincronizar Agora na barra de ferramentas.

Incluir código

  1. 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());
              }
          }
       }
    }
    
  2. No método OnCreate da classe MainActivity, 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");
    
    }
    
  3. 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"
    
  4. Verifique se você tem um dispositivo virtual para executar o aplicativo. Se não tiver um, adicione da seguinte maneira:

    1. Gerenciador de Dispositivos

    2. Dispositivos virtuais

    3. Execute o aplicativo no dispositivo selecionado e confirme se ele foi registrado com êxito no hub.

      Registro de dispositivos

      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:

  1. 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.

  2. Em Plataformas, selecione Android.

  3. 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.

  4. Confira o resultado da operação na lista na parte inferior da página do portal.

    Enviar notificação de teste

  5. 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: