Tutorial: Enviar notificações por push para dispositivos Android usando o Firebase SDK 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 Firebase Cloud Messaging (FCM) (versão 1.0.0-preview1) para enviar notificações por push para um aplicativo Android. Neste tutorial, você cria um aplicativo Android em branco que recebe notificações por push usando o Firebase Cloud Messaging (FCM).

Nota

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

Você pode baixar o código completo para este tutorial do GitHub.

Este tutorial contém os seguintes passos:

  • Criar um projeto do Android Studio.
  • Criar um projeto do Firebase que suporte o Firebase Cloud Messaging.
  • Criar um hub de notificação.
  • Conecte seu aplicativo ao hub.
  • Testar a aplicação.

Pré-requisitos

Para concluir este tutorial, tem de ter uma conta ativa do Azure. Se não tiver uma conta, pode criar uma conta de avaliação gratuita em apenas alguns minutos. Para obter mais detalhes, veja Avaliação Gratuita do Azure.

Nota

As APIs do Google/Firebase não são suportadas nas regiões do Azure China.

Você também precisa dos seguintes itens:

  • A versão mais recente do Android Studio é recomendada.
  • O suporte mínimo é o nível 19 da API.

Criar um projeto do Android Studio

O primeiro passo é criar um projeto no Android Studio:

  1. Inicie o Android Studio.

  2. Selecione Arquivo, selecione Novo e, em seguida, Novo Projeto.

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

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

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

    Configurar projeto

Criar um projeto do Firebase que suporte o FCM

  1. Inicie sessão na consola Firebase. Crie um novo projeto Firebase se ainda não tiver um.

  2. Depois de criar o projeto, selecione Adicionar Firebase à aplicação Android.

    Adicionar Firebase

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

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

      Especificar nome do pacote

    2. Selecione Registrar aplicativo.

  4. Selecione Download google-services.json, salve o arquivo na pasta do aplicativo do seu projeto e selecione Avançar.

    Transferir o serviço Google

  5. Na consola da Firebase, selecione o cog do seu projeto. Em seguida, selecione Definições do projeto.

    Definições do projeto

  6. Se você não baixou o arquivo google-services.json para a pasta do aplicativo do seu projeto do Android Studio, você pode fazê-lo nesta página.

  7. Mude para o separador Cloud Messaging .

  8. Copie e salve a chave do servidor para uso posterior. Você usa esse valor para configurar seu hub.

  9. Se não vir uma chave de servidor no separador Firebase Cloud Messaging , siga estes passos:

    1. Selecione o menu de três pontos do cabeçalho Cloud Messaging API (Legacy) Disabled .
    2. Siga o link para Gerenciar API no Google Cloud Console.
    3. No Google Cloud Console, selecione o botão para ativar a API do Google Cloud Messaging.
    4. Aguarde alguns minutos.
    5. Volte para a guia Cloud Messaging do projeto do console do Firebase e atualize a página.
    6. Veja se o cabeçalho da API do Cloud Messaging foi alterado para Cloud Messaging API (Legacy) Enabled e agora mostra uma chave do servidor.

    Captura de tela do portal mostrando Ativar a API do Cloud Messaging (Legado).

Configurar um hub de notificação

  1. Inicie sessão no portal do Azure.

  2. Selecione Todos os serviços no menu à esquerda e, em seguida, selecione Hubs de Notificação na seção Dispositivos móveis . Selecione o ícone de estrela ao lado do nome do serviço para adicionar o serviço à seção FAVORITOS no menu à esquerda. Depois de adicionar Hubs de Notificação aos 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 no Hub de Notificação.

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

    3. Selecione um valor na lista suspensa Local . Esse valor especifica o local no qual você deseja criar o hub.

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

    5. Selecione Criar.

      Criar hub

  5. Selecione Notificações (o ícone de sino) e, em seguida, selecione Ir para recurso. Você também pode atualizar a lista na página Hubs de Notificação e selecionar seu hub.

    Selecionar hub

  6. Selecione Políticas de Acesso na lista. Observe que duas cadeias de conexão estão disponíveis. Você precisará deles mais tarde para lidar com notificações push.

    Políticas de acesso

    Importante

    Não use a política DefaultFullSharedAccessSignature em seu aplicativo. Esta política deve ser usada apenas no back-end do aplicativo.

Configurar as definiçõ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 para o projeto FCM que você salvou anteriormente.

  3. Na barra de ferramentas, selecione Salvar.

    Chave do servidor

  4. O portal do Azure exibe uma mensagem informando que o hub foi atualizado com êxito. O botão Salvar está desativado.

Seu hub de notificação agora está configurado para funcionar com o Firebase Cloud Messaging. Você também tem as cadeias de conexão necessárias para enviar notificações para um dispositivo e registrar um aplicativo para receber notificações.

Ligar a aplicação ao Notification Hub

Adicionar serviços do Google Play para o projeto

  1. No Android Studio, selecione Ferramentas no menu e, em seguida, selecione Gerenciador 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, se ainda não estiver instalada.

    APIs

  4. Alterne para a guia Ferramentas do SDK. Se você ainda não instalou 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, para utilização num passo posterior.

    Serviços Play

  5. Se vir a caixa de diálogo Confirmar alteração, selecione OK. O instalador do componente instala os componentes solicitados. Selecione Concluir após a instalação dos componentes.

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

Adicionar bibliotecas dos Hubs de Notificação do Azure

  1. No arquivo build.gradle do aplicativo, adicione as seguintes linhas na seção dependencies:

    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:

    dependencyResolutionManagement {
     repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
     repositories {
         google()
         mavenCentral()
         maven { url 'https://example.io' }
     }
    }
    

Adicionar suporte do Google Firebase

  1. Adicione o seguinte plug-in no final do arquivo, se ele ainda não estiver lá.

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

Adicionar código

  1. Crie um objeto NotificationHubListener , que lida com a intercetaçã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. OnCreate No método da classe, adicione o seguinte código para iniciar o processo de inicialização dos Hubs de MainActivity 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, em seguida, selecione Reconstruir projeto para garantir que 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 um da seguinte forma:

    1. Gestor de dispositivos

    2. Dispositivos virtuais

    3. Execute o aplicativo no dispositivo selecionado e verifique se ele se registra com êxito no hub.

      Registo de dispositivos

      Nota

      O registro pode falhar durante a inicialização inicial, até que o onTokenRefresh() método do serviço de ID da instância seja chamado. Uma atualização deve iniciar um registro bem-sucedido no hub de notificação.

Enviar uma notificação de teste

Pode enviar notificações push para o seu hub de notificação a partir do portal do Azure, da seguinte forma:

  1. No portal do Azure, na página do hub de notificação do seu hub, selecione Testar envio na seção Solução de problemas .

  2. Em Plataformas, selecione Android.

  3. Selecione Enviar. Você ainda não verá uma 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. Veja o resultado da operação na lista na parte inferior da página do portal.

    Enviar notificação de teste

  5. Você vê a mensagem de notificação no seu dispositivo.

Normalmente, as notificações por push são enviadas em um serviço back-end, como aplicativos móveis ou ASP.NET usando uma biblioteca compatível. Se uma biblioteca não estiver disponível para seu back-end, você também poderá usar a API REST diretamente para enviar mensagens de notificação.

Execute o aplicativo móvel no emulador

Antes de testar as notificações por push dentro de um emulador, verifique se a imagem do emulador é compatível com o nível de API do Google escolhido para seu aplicativo. Se sua imagem não for compatível com APIs nativas do Google, você poderá obter uma SERVICE_NOT_AVAILABLE exceção.

Certifique-se também de que adicionou a sua Conta Google ao emulador em execução em Definições>. Caso contrário, suas tentativas de registro no FCM podem resultar em uma exceção AUTHENTICATION_FAILED .

Próximos passos

Neste tutorial, você usou o Firebase Cloud Messaging para transmitir notificações para todos os dispositivos Android registrados no serviço. Para saber como enviar notificações push para dispositivos específicos, avance para o tutorial seguinte:

A seguir está uma lista de alguns outros tutoriais para enviar notificações: