Enviar uma mensagem de teste a um app em segundo plano

Para começar a usar o FCM, crie o caso de uso mais simples: enviar uma mensagem de notificação do Editor do Notificações a um dispositivo de desenvolvimento específico quando o app estiver em segundo plano. Esta página descreve todas as etapas para fazer isso, desde a configuração até a verificação. Talvez ela aborde etapas que você já concluiu se configurou um app cliente do Android para o FCM.

Configurar o SDK

Esta seção aborda tarefas que você talvez tenha realizado se já ativou outros elementos do Firebase para seu app.

Pré-requisitos

  • Um dispositivo que execute:
    • API nível 16, Jelly Bean, no Android 4.1 ou versão posterior;
    • Google Play Services 15.0.0 ou posterior.
  • A versão mais recente do Android Studio

Se você ainda não tiver um projeto do Android Studio e quiser testar um recurso do Firebase, faça o download de um de nossos exemplos do guia de início rápido. Se você estiver usando um exemplo para início rápido, lembre-se de coletar o código do aplicativo do arquivo build.gradle, que geralmente fica na pasta app/, do módulo do seu projeto. Você precisará do nome desse pacote na próxima etapa.

Adicionar o Firebase ao app

Adicione o Firebase ao seu app. Para isso, serão necessários um projeto e um arquivo de configuração do Firebase para o app.

Para criar um projeto do Firebase:

  1. Acesse o Console do Firebase.

  2. Clique em Adicionar projeto e selecione ou insira o Nome do projeto.

    • Se você tiver um projeto do Google associado ao seu aplicativo, selecione o projeto no menu suspenso Nome do projeto.
    • Se você não tiver um projeto do Google, insira o novo Nome do projeto.
  3. (Opcional) Edite o código do projeto.

    O Firebase atribui automaticamente um código exclusivo ao seu projeto. Ele é exibido em serviços do Firebase visíveis publicamente, por exemplo:

    • URL padrão do Realtime Database: your-project-id.firebaseio.com
    • Nome padrão do intervalo do Cloud Storage: your-project-id.appspot.com
    • Subdomínio padrão do Hosting: your-project-id.firebaseapp.com
  4. Siga as demais etapas de configuração no Console do Firebase e clique em Criar projeto, ou Adicionar Firebase, se estiver usando um projeto atual do Google.

O Firebase provisiona recursos automaticamente para seu projeto. O processo normalmente leva alguns minutos. Quando o processo for concluído, você será direcionado para a página de visão geral do seu projeto no Console do Firebase.

Agora que você tem um projeto, adicione seu app para Android a ele:

  1. Clique em Adicionar o Firebase ao app para Android e siga as etapas de configuração. Se você estiver importando um projeto do Google, isso poderá ocorrer automaticamente. Basta fazer o download do arquivo de configuração.

  2. Quando solicitado, digite o nome do pacote do app. É importante inserir o nome do pacote usado por seu app. No entanto, essa configuração será feita apenas quando você adicionar um app ao projeto do Firebase.

  3. Para adicionar o arquivo de configuração do Firebase para Android no app, siga estas etapas:

    1. Clique em Fazer o download do google-services.json para receber o arquivo de configuração do Firebase para Android, google-services.json.

      É possível fazer o download do arquivo de configuração do Firebase para Android novamente a qualquer momento.

    2. Mova o arquivo de configuração para o mesmo diretório que o arquivo build.gradle no nível raiz.

  4. Depois de adicionar o código de inicialização, execute seu aplicativo para enviar ao Firebase console a confirmação de que você instalou o Firebase com sucesso.

Adicionar o SDK

Se você quiser integrar as bibliotecas do Firebase a um dos seus projetos, precisará realizar algumas tarefas básicas para preparar o projeto do Android Studio. Talvez você já tenha feito isso quando adicionou o Firebase ao seu app.

Primeiro, adicione regras ao seu arquivo build.gradle no nível raiz para incluir o plug-in google-services e o repositório Maven do Google:

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:4.2.0' // google-services plugin
    }
}

allprojects {
    // ...
    repositories {
        google() // Google's Maven repository
        // ...
    }
}

Em seguida, no arquivo Gradle do módulo (geralmente app/build.gradle), adicione a linha apply plugin na parte inferior do arquivo para ativar o plug-in do Gradle:

apply plugin: 'com.android.application'

android {
  // ...
}

dependencies {
  // ...
  implementation 'com.google.firebase:firebase-core:16.0.7'
  implementation 'com.google.firebase:firebase-messaging:17.3.4'
  // Getting a "Could not find" error? Make sure you have
  // added the Google maven respository to your root build.gradle
}

// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'

Você também precisa adicionar as dependências dos SDKs do Firebase que quer usar. Recomendamos começar com com.google.firebase:firebase-core, que fornece a funcionalidade do Google Analytics para Firebase. Consulte a lista de bibliotecas disponíveis.

Acessar o token de registro

Para enviar uma mensagem a um dispositivo específico, é necessário saber o token de registro dele. Como você precisa informar o token em um campo do console do Notificações para concluir este tutorial, lembre-se de copiar ou armazenar o token em segurança depois de recuperá-lo.

Na primeira inicialização do app, o SDK do FCM gera um token de registro para a instância do app cliente. Se você quiser segmentar dispositivos únicos ou criar grupos, precisará acessar esse token estendendo FirebaseMessagingService e codificando onNewToken.

Veja nesta seção como recuperar o token e monitorar as alterações feitas nele. Como o token pode ser alternado após a primeira inicialização, recomendamos que você recupere o token de registro mais atualizado.

Esse token pode mudar quando:

  • o aplicativo exclui o código da instância;
  • o aplicativo é restaurado em um novo dispositivo;
  • o usuário desinstala/reinstala o app;
  • o usuário limpa os dados do app.

Recuperar o token de registro atual

Quando você precisar recuperar o token atual, chame FirebaseInstanceId.getInstance().getInstanceId().

Java
Android

FirebaseInstanceId.getInstance().getInstanceId()
        .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
            @Override
            public void onComplete(@NonNull Task<InstanceIdResult> task) {
                if (!task.isSuccessful()) {
                    Log.w(TAG, "getInstanceId failed", task.getException());
                    return;
                }

                // Get new Instance ID token
                String token = task.getResult().getToken();

                // Log and toast
                String msg = getString(R.string.msg_token_fmt, token);
                Log.d(TAG, msg);
                Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
            }
        });

Kotlin
Android

FirebaseInstanceId.getInstance().instanceId
        .addOnCompleteListener(OnCompleteListener { task ->
            if (!task.isSuccessful) {
                Log.w(TAG, "getInstanceId failed", task.exception)
                return@OnCompleteListener
            }

            // Get new Instance ID token
            val token = task.result?.token

            // Log and toast
            val msg = getString(R.string.msg_token_fmt, token)
            Log.d(TAG, msg)
            Toast.makeText(baseContext, msg, Toast.LENGTH_SHORT).show()
        })

Monitorar a geração de tokens

O callback onNewToken é acionado sempre que um novo token é gerado.

Java
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
@Override
public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token);
}

Kotlin
Android

/**
 * Called if InstanceID token is updated. This may occur if the security of
 * the previous token had been compromised. Note that this is called when the InstanceID token
 * is initially generated so this is where you would retrieve the token.
 */
override fun onNewToken(token: String?) {
    Log.d(TAG, "Refreshed token: $token")

    // If you want to send messages to this application instance or
    // manage this apps subscriptions on the server side, send the
    // Instance ID token to your app server.
    sendRegistrationToServer(token)
}

Quando receber o token, você poderá enviá-lo ao servidor do app e armazená-lo usando o método de sua preferência. Consulte a referência da API de Instance ID para ver os detalhes da API.

Enviar uma mensagem de notificação de teste

  1. Instale e execute o app no dispositivo de destino.

  2. Verifique se o app está em segundo plano no dispositivo.

  3. Abra o Editor do Notificações e selecione Nova mensagem.

  4. Digite o texto da mensagem.

  5. Selecione Testar no seu dispositivo.

  6. No campo Token de registro FCM, insira o token de registro obtido na seção anterior deste guia.

  7. Clique em Testar.

Depois de clicar em Testar, o dispositivo cliente de destino que tem o app em segundo plano receberá a notificação na bandeja de notificações do sistema.

Para ver insights sobre a entrega de mensagens ao seu aplicativo, consulte o painel de relatórios do FCM, que registra o número de mensagens enviadas e abertas em dispositivos iOS e Android, juntamente com os dados de "impressões" (notificações vistas pelos usuários) para apps para Android.

Próximas etapas

Enviar mensagem aos apps em primeiro plano

Depois de enviar com êxito mensagens de notificação enquanto o seu app está em segundo plano, consulte Receber mensagens em um app para Android para começar a enviar a apps em primeiro plano.

Vá além das mensagens de notificação

Para ir além das mensagens de notificação e adicionar outros comportamentos mais avançados ao seu app, consulte:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.