Configurar um app cliente do Firebase Cloud Messaging no Android

Para escrever seu app cliente Android do Firebase Cloud Messaging, use a FirebaseMessaging API e o Android Studio 1.4 ou posterior com o Gradle. As instruções nesta página presumem que você concluiu as etapas para adicionar o Firebase ao seu projeto para Android.

Os clientes do FCM exigem que dispositivos com o Android 4.0 ou versões posteriores também tenham o app da Google Play Store instalado ou um emulador executando o Android 4.0 com APIs do Google. Observe que não é preciso se limitar à Google Play Store para implementar apps Android.

Configurar o Firebase e o SDK do FCM

  1. Adicione o Firebase ao seu projeto para Android, caso ainda não tenha feito isso.

  2. No Android Studio, adicione a dependência FCM ao arquivo build.gradle no nível do app:

    dependencies {
         compile 'com.google.firebase:firebase-messaging:11.0.4'
    }

Editar o manifesto do app

Adicione os seguintes itens ao manifesto do app:

  • Um serviço que estende FirebaseMessagingService. Isso é necessário se você quiser processar qualquer mensagem além de simplesmente receber notificações em apps em segundo plano. Para receber notificações em apps em primeiro plano ou payload de dados, enviar mensagens upstream e assim por diante, você deve estender esse serviço.
  • <service
        android:name=".MyFirebaseMessagingService">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT"/>
        </intent-filter>
    </service>
  • Um serviço que estenda o FirebaseInstanceIdService para processar a criação, a rotação e a atualização dos tokens de registro. Isso é necessário para o envio a dispositivos específicos ou para a criação de grupos de dispositivos.
  • <service
        android:name=".MyFirebaseInstanceIDService">
        <intent-filter>
            <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
        </intent-filter>
    </service>
  • (Opcional) Dentro do componente do aplicativo, os elementos de metadados para definir um ícone, uma cor e um canal de notificações (novo no Android O) padrão para notificações. O Android usa esses valores sempre que mensagens recebidas não definem explicitamente a cor do ícone ou o canal de notificação.
  • <!-- Set custom default icon. This is used when no icon is set for incoming notification messages.
         See README(https://goo.gl/l4GJaQ) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_icon"
        android:resource="@drawable/ic_stat_ic_notification" />
    <!-- Set color used with incoming notification messages. This is used when no color is set for the incoming
         notification message. See README(https://goo.gl/6BKBk7) for more. -->
    <meta-data
        android:name="com.google.firebase.messaging.default_notification_color"
        android:resource="@color/colorAccent" />
  • Se o FCM for fundamental para o funcionamento do app Android, defina minSdkVersion 8 ou posterior no build.gradle do app. Isso garante que o app Android não seja instalado em um ambiente em que não possa ser executado adequadamente.

Acessar o token de registro do dispositivo

Na inicialização do app, o SDK do FCM gera um token de registro para a instância do app cliente. Para segmentar dispositivos individuais ou criar grupos de dispositivos, você precisa acessar esse token estendendo FirebaseInstanceIdService.

Esta seção descreve 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 for necessário recuperar o token atual, chame FirebaseInstanceId.getInstance().getToken(). Esse método retorna null se o token ainda não tiver sido gerado.

Monitorar a geração de tokens

O retorno de chamada onTokenRefresh é disparado sempre que um novo token é gerado. Portanto, chamar getToken nesse contexto garantirá o acesso a um token de registro atual e disponível. Verifique se você adicionou o serviço ao seu manifesto. Depois, chame getToken no contexto de onTokenRefresh e registre o valor da seguinte forma:

@Override
public void onTokenRefresh() {
    // Get updated InstanceID token.
    String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    Log.d(TAG, "Refreshed token: " + refreshedToken);

    // 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(refreshedToken);
}

Depois de obter o token, você pode enviá-lo ao servidor do aplicativo e armazená-lo usando o método de sua preferência. Consulte a referência da Instance ID API para ver detalhes completos sobre a API.

Verifique o Google Play Services

Os apps que contam com o SDK do Google Play Services devem sempre verificar se há um APK do Google Play Services compatível no dispositivo antes de acessar os recursos. Recomenda-se fazer isso em dois lugares: no método onCreate() da atividade principal e no método onResume(). Com a verificação de onCreate(), só é possível utilizar o app após uma verificação bem-sucedida. A verificação de onResume() garante que, se o usuário retornar ao app em execução por outro meio, como pelo botão "Voltar", a verificação ainda será executada.

Se o dispositivo não tiver uma versão compatível do Google Play Services, seu app poderá chamar GoogleApiAvailability.makeGooglePlayServicesAvailable() para permitir que os usuários façam o download de serviços do Google Play Services na Play Store.

Próximas etapas

Depois que o app cliente estiver configurado, é possível começar a enviar mensagens downstream com o Editor do Notificações. Essa funcionalidade é demonstrada na amostra de início rápido, que você pode fazer o download, executar e revisar.

Para adicionar outro comportamento mais avançado ao app, você pode declarar um filtro de intent e implementar uma atividade para responder a mensagens recebidas. Para ver mais detalhes, consulte os guias para envio de mensagens de um servidor de app:

Tenha em mente que, para aproveitar esses recursos, você precisará de uma implementação de servidor e dos protocolos do servidor (HTTP ou XMPP) ou de uma implementação do Admin SDK.

Enviar comentários sobre…

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