Configurar um app cliente do Firebase Cloud Messaging no Android

Siga estas etapas para configurar um cliente FCM no Flutter.

Configuração e requisitos específicos da plataforma

Algumas das etapas necessárias dependem da plataforma que você está segmentando.

iOS+

Ativar as funcionalidades do app no Xcode

Antes que seu aplicativo possa começar a receber mensagens, ative as notificações push e os modos de segundo plano no seu projeto do Xcode.

  1. Abra o espaço de trabalho do seu projeto do Xcode (ios/Runner.xcworkspace).
  2. Ativar notificações push
  3. Ative os modos de execução em segundo plano de Busca em segundo plano e Notificações remotas.

Fazer upload da chave de autenticação de APNs

Antes de usar o FCM, faça o upload do certificado de APNs para o Firebase. Se você ainda não tem um certificado de APNs, crie um no Apple Developer Member Center.

  1. No seu projeto do Console do Firebase, selecione o ícone de engrenagem, Configurações do projeto e a guia Cloud Messaging.
  2. Para fazer o upload dos certificados de desenvolvimento ou de produção, selecione o botão Carregar certificado. Pelo menos uma dessas opções é obrigatória.
  3. Selecione o arquivo .p12 de cada um deles e informe a senha, se houver. Verifique se o ID do pacote desse certificado corresponde ao ID do pacote do seu app. Selecione Salvar.

Swizzling de métodos

Para usar o plug-in do Flutter do FCM em dispositivos Apple, não desative o swizzling de métodos. O swizzling é obrigatório e, sem ele, os principais recursos do Firebase, como o processamento de tokens do FCM, não funcionam corretamente.

Android

Google Play Services

Para os clientes do FCM, é necessário que os dispositivos com o Android 4.4 ou versões mais recentes também tenham o Google Play Services instalado ou um emulador executando o Android 4.4 com APIs do Google. Não é necessário se limitar à Google Play Store para implantar apps Android.

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, o app poderá chamar GoogleApiAvailability.makeGooglePlayServicesAvailable() para que os usuários façam o download desse serviço na Play Store.

Web

Configurar credenciais da Web com o FCM

A interface da Web do FCM usa credenciais da Web chamadas "Identificação voluntária do servidor de aplicativos" ou chaves "VAPID" para autorizar solicitações de envio a serviços de push da Web compatíveis. Para inscrever seu app nas notificações push, é preciso associar um par de chaves ao projeto do Firebase. Você pode gerar um novo par de chaves ou importar um existente por meio do Console do Firebase.

Gerar um novo par de chaves
  1. Abra a guia Cloud Messaging do painel Configurações do Console do Firebase e vá até a seção Configuração da Web.

  2. Na guia Certificados de push da Web, clique em Gerar par de chaves. O console exibe um aviso de que o par de chaves foi gerado e exibe a string de chave pública e a data.

Importar um par de chaves existente

Se você já estiver usando um par de chaves no seu app da Web, é possível importar esse par ao FCM para que possa chamar suas instâncias de apps da Web existentes usando as APIs do FCM. Para importar chaves, você precisa ter acesso de proprietário ao projeto do Firebase. Importe a chave pública e a particular existentes no formato codificado seguro de URL base64:

  1. Abra a guia Cloud Messaging do painel Configurações do Console do Firebase e vá até a seção Configuração da Web.

  2. Na guia Certificados de push da Web, localize e selecione o texto do link "Importar um par de chaves existente".

  3. Na caixa de diálogo Importar um par de chaves, forneça suas chaves pública e privada nos campos correspondentes e clique em Importar. O console exibe a string de chave pública e a data adicionada.

Para mais informações sobre o formato das chaves e como gerá-las, consulte Chaves do servidor de aplicativos.

Instalar o plug-in do FCM

  1. Instale e inicialize os plug-ins do Firebase para Flutter, caso ainda não tenha feito isso.

  2. Na raiz do seu projeto do Flutter, execute o seguinte comando para instalar o plug-in:

    flutter pub add firebase_messaging
    
  3. Após a conclusão, recrie seu aplicativo do Flutter:

    flutter run
    

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 Firebase Notificações para concluir este tutorial, lembre de copiar ou armazenar o token em segurança depois de recuperá-lo.

Para recuperar o token de registro atual de uma instância de app, chame getToken(). Se a permissão de notificações não tiver sido concedida, esse método solicitará essa permissão ao usuário. Caso contrário, ele retorna um token ou rejeita a promessa devido a um erro.

// You may set the permission requests to "provisional" which allows the user to choose what type
// of notifications they would like to receive once the user receives a notification.
final notificationSettings = await FirebaseMessaging.instance.requestPermission(provisional: true);

// For apple platforms, ensure the APNS token is available before making any FCM plugin API calls
final apnsToken = await FirebaseMessaging.instance.getAPNSToken();
if (apnsToken != null) {
 // APNS token is available, make FCM plugin API requests...
}

Nas plataformas da Web, transmita sua chave pública VAPID para getToken():

final fcmToken = await FirebaseMessaging.instance.getToken(vapidKey: "BKagOny0KF_2pCJQ3m....moL0ewzQ8rZu");

Para receber notificações sempre que o token for atualizado, inscreva-se no fluxo onTokenRefresh:

FirebaseMessaging.instance.onTokenRefresh
    .listen((fcmToken) {
      // TODO: If necessary send token to application server.

      // Note: This callback is fired at each app startup and whenever a new
      // token is generated.
    })
    .onError((err) {
      // Error getting token.
    });

Impedir a inicialização automática

Quando um token de registro do FCM é gerado, a biblioteca faz upload dos dados de configuração e do identificador para o Firebase. Se você preferir evitar a geração automática de tokens, desative a inicialização automática no momento da criação.

iOS

No iOS, adicione um valor de metadados ao seu Info.plist:

FirebaseMessagingAutoInitEnabled = NO

Android

No Android, desative a coleta do Analytics e a inicialização automática do FCM (é necessário desativar ambos) adicionando estes valores de metadados ao seu AndroidManifest.xml:

<meta-data
    android:name="firebase_messaging_auto_init_enabled"
    android:value="false" />
<meta-data
    android:name="firebase_analytics_collection_enabled"
    android:value="false" />

Reativar o início automático do FCM no tempo de execução

Para ativar a inicialização automática de uma instância de app específica, chame setAutoInitEnabled():

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Depois de definido, esse valor persiste às reinicializações do app.

Próximas etapas

Depois que o app cliente estiver configurado, é possível começar a enviar mensagens downstream com o Editor do Notificações. Ver Enviar uma mensagem de teste a um app em segundo plano.

Para adicionar outro comportamento mais avançado ao app, você precisará de uma implementação de servidor.

Em seguida, no cliente do app: