Participe do Firebase Summit on-line e presencialmente em 18 de outubro de 2022. Veja como o Firebase pode ajudar a acelerar o desenvolvimento de apps, a lançar seu aplicativo com confiança e a fazer o escalonamento facilmente. Inscreva-se agora

Configurar 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á segmentando.

iOS+

Habilite os recursos do aplicativo no Xcode

Antes que seu aplicativo possa começar a receber mensagens, você deve habilitar notificações push e modos em segundo plano em seu projeto Xcode.

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

Carregue sua chave de autenticação de APNs

Antes de usar o FCM, faça upload do certificado de APNs para o Firebase. Se você ainda não tiver um certificado de 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. Verifique se o ID do pacote para este certificado corresponde ao ID do pacote do seu aplicativo. Selecione Salvar .

Swizzling de métodos

Para usar o plug-in 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 do FCM, não funcionam corretamente.

Android

Serviços do Google Play

Os clientes FCM requerem 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 Google 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 lugares: 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. O check-in 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á realizada.

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 da Play Store.

Rede

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 o envio de solicitações para serviços de push da Web suportados. Para inscrever seu aplicativo em 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 seu par de chaves existente por meio do Firebase console.

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

  2. Na guia de 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 string da chave pública e a data adicionada.

Importar um par de chaves existente

Se você tiver um par de chaves existente que já está usando com seu aplicativo Web, poderá importá-lo para o FCM para que possa acessar suas instâncias de aplicativos Web existentes por meio de APIs do FCM. Para importar chaves, você precisa ter acesso no nível do 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 role até a seção de configuração da Web .

  2. Na guia de certificados do 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 do FCM

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

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

    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, certifique-se de copiar o token ou armazená-lo com segurança depois de recuperá-lo.

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

final fcmToken = await FirebaseMessaging.instance.getToken();

Em plataformas da 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 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 carrega o identificador e os 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 compilaçã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 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" />

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

Para habilitar 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 depois de definido.

Próximos passos

Depois que o aplicativo cliente estiver configurado, você estará pronto para começar a enviar mensagens downstream com o compositor de notificações . 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 .

Em seguida, em seu cliente de aplicativo: