Configure um aplicativo cliente Firebase Cloud Messaging no Flutter

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á almejando.

iOS+

Habilite recursos de aplicativos no Xcode

Antes que seu aplicativo comece a receber mensagens, você deve ativar notificações push e modos de segundo plano em seu projeto Xcode.

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

Faça upload da sua chave de autenticação de APNs

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

  1. Dentro do seu projeto no console do Firebase, selecione o ícone de engrenagem, selecione Configurações do projeto e selecione a guia Cloud Messaging .
  2. Selecione o botão Carregar Certificado para seu certificado de desenvolvimento, seu certificado de produção ou ambos. Pelo menos um é necessário.
  3. Para cada certificado, selecione o arquivo .p12 e forneça a senha, se houver. Certifique-se de que o ID do pacote deste certificado corresponda ao ID do pacote do seu aplicativo. Selecione Salvar .

Método girando

Para usar o plugin FCM Flutter em dispositivos Apple, você não deve desabilitar o método swizzling. O swizzling é necessário e, sem ele, os principais recursos do Firebase, como o manuseio de tokens FCM, não funcionam corretamente.

Android

Serviços do Google Play

Os clientes FCM exigem dispositivos com Android 4.4 ou superior que também tenham o Google Play Services instalado ou um emulador com Android 4.4 com APIs do Google. Observe que você não está limitado a implantar seus aplicativos Android por meio da Google Play Store.

Os aplicativos que dependem do SDK do Play Services devem sempre verificar se há um APK do Google Play Services compatível no dispositivo antes de acessar os recursos do Google Play Services. Recomenda-se fazer isso em dois locais: no método onCreate() da atividade principal e em seu método onResume() . O check-in onCreate() garante que o aplicativo não possa ser usado sem uma verificação bem-sucedida. A verificação onResume() garante que, se o usuário retornar ao aplicativo em execução por algum outro meio, como o 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 aplicativo poderá chamar GoogleApiAvailability.makeGooglePlayServicesAvailable() para permitir que os usuários baixem o Google Play Services na Play Store.

Rede

Configurar credenciais da Web com 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 o envio de solicitações para serviços de web push suportados. Para assinar seu aplicativo para notificações push, você precisa associar um par de chaves ao seu projeto do Firebase. Você pode gerar um novo par de chaves ou importar o par de chaves existente por meio do console do Firebase.

Gere 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 de configuração da Web .

  2. Na guia Certificados Web Push , clique em Gerar par de chaves . O console exibe um aviso de que o par de chaves foi gerado e exibe a sequência da chave pública e a data de adição.

Importe um par de chaves existente

Se você já tiver um par de chaves em uso com seu aplicativo Web, poderá importá-lo para o FCM para poder acessar as instâncias existentes do aplicativo Web por meio de APIs do FCM. Para importar chaves, você precisa ter acesso de proprietário ao projeto do Firebase. Importe sua chave pública e privada existente 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 de configuração da Web .

  2. Na guia Certificados Web Push , 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úblicas e privadas nos campos correspondentes e clique em Importar . O console exibe a string da chave pública e a data adicionada.

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

Instale o plug-in 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 Flutter, execute o seguinte comando para instalar o plugin:

    flutter pub add firebase_messaging
    
  3. Depois de concluído, reconstrua seu aplicativo Flutter:

    flutter run
    

Acesse o token de registro

Para enviar uma mensagem para um dispositivo específico, você precisa saber o token de registro desse dispositivo. Como você precisará inserir o token em um campo no console de Notificações para concluir este tutorial, copie o token ou armazene-o com segurança após recuperá-lo.

Para recuperar o token de registro atual de uma instância de aplicativo, chame getToken() . Se a permissão de notificação não tiver sido concedida, este método solicitará permissões de notificação ao usuário. Caso contrário, retorna um token ou rejeita o futuro 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...
}

Em plataformas web, passe sua chave pública VAPID para getToken() :

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

Para ser notificado sempre que o token for atualizado, inscreva-se no stream 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 do identificador e dos dados de configuração para o Firebase. Se você preferir evitar a geração automática de token, desative a inicialização automática no momento da construçã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 (você deve desativar ambas) 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" />

Reative a inicialização automática do FCM em tempo de execução

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

await FirebaseMessaging.instance.setAutoInitEnabled(true);

Esse valor persiste nas reinicializações do aplicativo, uma vez definido.

Próximos passos

Após a configuração do aplicativo cliente, você estará pronto para começar a enviar mensagens downstream com o Notifications Composer . Consulte Enviar uma mensagem de teste para um aplicativo em segundo plano .

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

Então, no cliente do seu aplicativo: