Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Configurar um aplicativo cliente Firebase Cloud Messaging no Flutter

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

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+

Habilitar recursos de aplicativo no Xcode

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

  1. Abra o espaço de trabalho do projeto Xcode ( ios/Runner.xcworkspace ).
  2. Habilitar 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, carregue seu certificado de APNs no Firebase. Se você ainda não possui um certificado de APNs, crie um no Apple Developer Member Center .

  1. Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, 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 para este certificado corresponda ao ID do pacote do seu aplicativo. Selecione Salvar .

método swizzling

Para usar o plug-in FCM Flutter em dispositivos Apple, você não deve desativar o método swizzling. Swizzling é necessário e, sem ele, os principais recursos do Firebase, como o manuseio de token 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 os serviços do Google Play instalados 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. É recomendável fazer isso em dois locais: no método onCreate() da atividade principal e no método onResume() da atividade principal. A verificação em onCreate() garante que o aplicativo não possa ser usado sem uma verificação bem-sucedida. A verificação em onResume() garante que, se o usuário retornar ao aplicativo em execução por algum outro meio, como por meio do botão Voltar, a verificação ainda será executada.

Se o dispositivo não tiver uma versão compatível dos serviços do Google Play, seu aplicativo poderá chamar GoogleApiAvailability.makeGooglePlayServicesAvailable() para permitir que os usuários façam o download dos serviços do Google Play 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 push da Web compatíveis. 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 Firebase console Settings e role até a seção Web configuration .

  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 cadeia de caracteres da chave pública e a data adicionada.

Importar um par de chaves existente

Se você tiver um par de chaves existente que já esteja usando com seu aplicativo da web, poderá importá-lo para o FCM para que possa acessar suas instâncias de aplicativos da web existentes por meio de APIs do FCM. Para importar chaves, você deve 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 Firebase console Settings e role até a seção Web configuration .

  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ública e privada nos campos correspondentes e clique em Importar . O console exibe a string de 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 conhecer 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 após recuperá-lo.

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

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

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 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 impedir 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, desabilite a coleta do Analytics e a inicialização automática do FCM (você deve desabilitar 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 no 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 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, no cliente do aplicativo:

,

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+

Habilitar recursos de aplicativo no Xcode

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

  1. Abra o espaço de trabalho do projeto Xcode ( ios/Runner.xcworkspace ).
  2. Habilitar 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, carregue seu certificado de APNs no Firebase. Se você ainda não possui um certificado de APNs, crie um no Apple Developer Member Center .

  1. Dentro do seu projeto no Firebase console, selecione o ícone de engrenagem, selecione Project Settings e, em seguida, 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 para este certificado corresponda ao ID do pacote do seu aplicativo. Selecione Salvar .

método swizzling

Para usar o plug-in FCM Flutter em dispositivos Apple, você não deve desativar o método swizzling. Swizzling é necessário e, sem ele, os principais recursos do Firebase, como o manuseio de token 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 os serviços do Google Play instalados 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. É recomendável fazer isso em dois locais: no método onCreate() da atividade principal e no método onResume() da atividade principal. A verificação em onCreate() garante que o aplicativo não possa ser usado sem uma verificação bem-sucedida. A verificação em onResume() garante que, se o usuário retornar ao aplicativo em execução por algum outro meio, como por meio do botão Voltar, a verificação ainda será executada.

Se o dispositivo não tiver uma versão compatível dos serviços do Google Play, seu aplicativo poderá chamar GoogleApiAvailability.makeGooglePlayServicesAvailable() para permitir que os usuários façam o download dos serviços do Google Play 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 push da Web compatíveis. 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 Firebase console Settings e role até a seção Web configuration .

  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 cadeia de caracteres da chave pública e a data adicionada.

Importar um par de chaves existente

Se você tiver um par de chaves existente que já esteja usando com seu aplicativo da web, poderá importá-lo para o FCM para que possa acessar suas instâncias de aplicativos da web existentes por meio de APIs do FCM. Para importar chaves, você deve 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 Firebase console Settings e role até a seção Web configuration .

  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ública e privada nos campos correspondentes e clique em Importar . O console exibe a string de 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 conhecer 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 após recuperá-lo.

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

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

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 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 impedir 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, desabilite a coleta do Analytics e a inicialização automática do FCM (você deve desabilitar 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 no 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 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, no cliente do aplicativo: