Configurar Notificação Push de App em Flutter usando PushEngage

O SDK Flutter da PushEngage facilita a integração de notificações push nas suas aplicações Flutter, proporcionando compatibilidade perfeita com as plataformas Android e iOS.

Este guia irá guiá-lo através dos passos para configurar o SDK Flutter da PushEngage e ativar notificações push nas suas aplicações Android e iOS.

Antes de Começar

Aqui está uma lista de coisas que irá necessitar

  • Um projeto Flutter & conta PushEngage. Se não tiver uma conta, pode registar-se aqui.
  • Conta Firebase com configuração do Firebase Cloud Messaging (FCM) para Android.
  • Uma conta de Desenvolvedor Apple para configurar os serviços Apple Push Notification (APN) para iOS.

Instalação

1. Abra o seu projeto Flutter no seu editor de código.

2. Adicione a seguinte dependência no seu ficheiro pubspec.yaml:

dependencies:
	pushengage_flutter_sdk: ^0.0.1

3. Execute o seguinte comando para instalar o pacote.

dependencies:
flutter pub get

Configuração do Android

Configuração do Firebase Cloud Messaging (FCM)

Para ativar notificações push para Android, necessitará de configurar o Firebase Cloud Messaging (FCM):

1. Aceda à consola Firebase utilizando a sua conta Google.

2. Criar um novo projeto ou selecionar um Projeto existente: Clique em “Adicionar Projeto” para criar um novo projeto, ou selecione um projeto existente da sua lista. Se estiver a usar um projeto existente, prossiga diretamente para o passo 4.

3. Introduzir Detalhes do Projeto: Adicione um nome para o seu projeto e clique em Continuar. Complete o processo de configuração clicando em “Criar projeto” no ecrã final.

4. Adicionar uma Aplicação Android ao Projeto: No painel do seu projeto Firebase, clique no ícone Android para adicionar uma aplicação Android.

5. Configurar Aplicação Android: Introduza o nome do pacote da sua aplicação Android (encontrado em android/app/build.gradle no bloco android) e forneça um nome para a aplicação. Clique em Registar quando terminar.

6. Descarregar Ficheiro de Configuração: Descarregue o ficheiro google-services.json e coloque-o na raiz do módulo da sua aplicação Android em android/app/

7. Gerar Chave de Conta de Serviço JSON

  • Na consola Firebase, clique no ícone Definições ao lado de “Visão Geral do Projeto” no canto superior esquerdo, depois selecione Definições do projeto.
  • Navegue até ao separador Contas de serviço.
  • Clique em Gerar nova chave privada e descarregue o ficheiro .json.
  • Mantenha este ficheiro seguro, pois precisará dele para a configuração do painel PushEngage.

8. Obter o ID do Remetente

  • Na consola Firebase, clique no ícone Definições ao lado de Visão Geral do Projeto no canto superior esquerdo e selecione “Definições do projeto.”
  • Selecione o separador Cloud Messaging. Aqui, encontrará o ID do Remetente, que é necessário para a inicialização do SDK PushEngage.

Integrar FCM com o Painel PushEngage

Para integrar perfeitamente os detalhes do FCM com o Painel PushEngage, siga os passos descritos abaixo:

  1. Aceda à sua conta PushEngage iniciando sessão com as suas credenciais.
  1. Navegue para Definições » Instalação e escolha o separador SDK Android
  1. Agora, Configure as Definições do FCM
  • Introduza o seu ID de Remetente do Firebase (obtido na Consola do Firebase).
  • Carregue o ficheiro JSON da Conta de Serviço (descarregado do Firebase).
  • Clique no botão Atualizar para guardar estas definições.

5. Copiar ID da Aplicação: Após configurar as definições do FCM, ser-lhe-á fornecido um ID da Aplicação. Copie este ID da Aplicação, pois é necessário para inicializar o SDK Android do PushEngage na sua aplicação Flutter.

Configuração do iOS

Configuração do projeto

Pedimos que siga os passos abaixo após abrir o seu projeto.

Eis como pode abrir um projeto: nome_do_seu_projeto » iOS » Runner.xcworkspace.

1. Ativar Notificações Remotas

  • Abra o seu projeto Xcode e selecione o projeto raiz no Navegador de Projetos.
  • Escolha o seu alvo principal de aplicação.
  • Navegue para “Assinatura e Capacidades.
  • Certifique-se de que a capacidade Modos de Segundo Plano está adicionada. Se não estiver, adicione-a clicando no botão “+ Capacidade“.
  • Da mesma forma, certifique-se de que a capacidade de Notificações Push está adicionada. Se não estiver, adicione-a usando o botão “+ Capacidade“.

Se a capacidade “Notificações Push” não estiver visível no Xcode:

  • Vá à sua conta de Desenvolvedor Apple.
  • Navegue para “Certificados, Identificadores e Perfis.” Selecione o identificador da sua aplicação.
  • Edite a configuração do seu ID de Aplicação e certifique-se de que as Notificações Push estão ativadas.
  • Volte ao Xcode e tente adicionar novamente a capacidade de Notificações Push.

2. Ativar Modos de Segundo Plano

  • No seu projeto Xcode, navegue para “Assinatura e Capacidades.
  • Dentro de “Modos de Segundo Plano“, ative tanto “Notificações Remotas” como “Busca em Segundo Plano.
  • Este passo garante que a sua aplicação pode lidar com notificações remotas e buscas em segundo plano de forma eficiente.

Se não tiver um certificado APN para iOS, pode criar um usando o guia aqui.

Em seguida, precisa de adicionar a extensão de Serviço de Notificação e a extensão de Conteúdo de Notificação apenas para iOS.

Criação da Extensão de Serviço de Notificação

A Extensão de Serviço de Notificação melhora a capacidade da sua aplicação iOS de receber notificações. É usada para modificar o conteúdo da notificação ou buscar/processar quaisquer dados ao receber a notificação. Siga estes passos para criar uma Extensão de Serviço de Notificação:

  1. Abra o Xcode e navegue para o seu projeto.
  2. Selecione Ficheiro » Novo » Destino no menu.
  3. Na janela de seleção de modelos, escolha Extensão de Serviço de Notificação e clique em Seguinte.

4. Forneça um nome para a sua extensão, por exemplo, PushEngageNotificationServiceExtension, e clique em Concluir.

4. Forneça um nome para a sua extensão, por exemplo, PushEngageNotificationServiceExtension, e clique em Concluir.

5. Quando terminar de criar a Extensão de Serviço de Notificação, poderá ser-lhe pedido para a ativar. Não a ative imediatamente. Ativar a extensão mudaria o foco de depuração do Xcode da sua aplicação para a extensão. Se a ativar por engano, não se preocupe; pode voltar a depurar a sua aplicação dentro do Xcode.

6. No navegador de projetos, selecione o diretório do projeto de nível superior e selecione o destino NotificationServiceExtension no projeto na lista de destinos criada no passo 4.

7. Defina o Destino de Implementação para iOS 10 ou superior, que é a versão do iOS que a Apple lançou com suporte para esta extensão. 

Inicialização do SDK PushEngage para a Extensão de Serviço de Notificação

Para garantir o bom funcionamento do SDK PushEngage na sua Extensão de Serviço de Notificação iOS, siga os passos abaixo

  1. Abra o_seu_nome_de_projeto » ios » Podfile.
  2.  Adicione o seguinte ao final do seu Podfile:
post_install do |installer|

  installer.pods_project.targets.each do |target|

    flutter_additional_ios_build_settings(target)

    target.build_configurations.each do |config|

      config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'No'

     end

  end

end

target 'Your_Notification_Service_Extension_Name' do

  use_frameworks!

  pod 'PushEngage', '~>0.0.4'

end
  1. Instale a dependência:

Agora precisa de executar o comando no diretório iOS do seu projeto e executar o seguinte comando:

pod repo update 

pod install
  1. Na sua extensão de Serviço de Notificação, certifique-se de importar o framework PushEngage e adicionar o código de inicialização necessário. Veja como pode fazê-lo usando Swift.
import UserNotifications
import PushEngage

@available(iOSApplicationExtension 10.0, *)
class PushEngageNotificationServiceExtension: UNNotificationServiceExtension {

    var contentHandler: ((UNNotificationContent) -> Void)?
    var bestAttemptContent: UNMutableNotificationContent?
    var request : UNNotificationRequest?

    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
        self.request = request
        self.contentHandler = contentHandler
        self.bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
       
        if let bestContent = bestAttemptContent {
            PushEngage.didReceiveNotificationExtensionRequest(request, bestContentHandler: bestContent)
            contentHandler(bestContent)
        }
    }
   
    override func serviceExtensionTimeWillExpire() {
        // Called just before the extension will be terminated by the system.
        // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
        if let contentHandler = contentHandler, let request = request ,let bestAttemptContent =  bestAttemptContent {
            guard let content = PushEngage.serviceExtensionTimeWillExpire(request, content: bestAttemptContent) else {
                contentHandler(bestAttemptContent)
                return
            }
            contentHandler(content)
        }
    }

}

Criação da Extensão de Conteúdo de Notificação

Para melhorar a forma como adiciona UI personalizada, terá de criar uma Extensão de Conteúdo de Notificação. Siga os passos abaixo para configurar a extensão:

  1. No Xcode, vá a Ficheiro » Novo » Destino.
  2. Selecione Extensão de Conteúdo de Notificação e clique em Seguinte.

3. Não selecione “Ativar” no diálogo que aparece após clicar em Concluir. Cancelar mantém o Xcode a depurar a sua aplicação em vez da extensão. Se a ativar acidentalmente, volte a depurar a sua aplicação dentro do Xcode (ao lado do botão de execução).

4. No navegador de projetos, selecione o diretório do projeto de nível superior e selecione o destino NotificationContentExtension no projeto na lista de destinos criada no passo 2.

5. Defina o Destino de Implementação para iOS 10 ou superior, que é a versão do iOS que a Apple lançou com suporte para esta extensão. 

Inicialização do SDK PushEngage para a Extensão de Conteúdo de Notificação

Para garantir o bom funcionamento do SDK PushEngage na sua Extensão de Conteúdo de Notificação iOS, siga estes passos:

Abra o_seu_nome_de_projeto » iOS » Podfile.

Adicione o seguinte ao final do seu Podfile:

target 'Your_Notification_Content_Extension_Name' do
  use_frameworks!
  pod 'PushEngage', '0.0.4'
end

  1. Instale a dependência: Eis o código que precisa de executar na sua linha de comando.

e

pod repo update 
pod install
  1. No seu target da Extensão de Conteúdo de Notificação, certifique-se de importar o framework PushEngage e adicionar o código de inicialização necessário. Veja como pode fazê-lo com alguns exemplos de elementos de UI usando Swift.
import UIKit
import UserNotifications
import UserNotificationsUI
import PushEngage

@available(iOSApplicationExtension 10.0, *)

class NotificationViewController: UIViewController, UNNotificationContentExtension {
    fileprivate var hostingView: UIHostingController<ContentView>?
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
    }

    func didReceive(_ notification: UNNotification) {
        if(notification.request.content.categoryIdentifier == "your_identifier"){
            let payLoad = PushEngage.getCustomUIPayLoad(for: notification.request)
  //pass the payload to your custom View
            let view = CustomView(payLoadInfo: payLoad)
            hostingView = UIHostingController(rootView: view)
If let customView = self.hostingView {
            addChild(hostingView!)
}
        }
    }
}

Adicionar Grupos de Aplicações

Os Grupos de Aplicações são essenciais para permitir a comunicação entre a aplicação principal, a extensão do serviço de notificação e a extensão de conteúdo de notificação. Siga estes passos para adicionar Grupos de Aplicações ao seu projeto iOS:

Se já tem um grupo de aplicações e pretende usar apenas esse, salte para o passo 4.

  1. No seu projeto Xcode, no navegador de projetos, selecione o diretório de projeto de nível superior e selecione o target principal da aplicação.
  2. Navegue até ao separador Signing & Capabilities.
  3. Clique no botão “+ Capability” e selecione App Groups na lista.

4. Clique no botão + para adicionar um Grupo de Aplicações.

5. Adicione um nome único ao seu Grupo de Aplicações e clique em OK.

6. Na área do editor principal, selecione o target principal da sua aplicação. Se criou um grupo de aplicações, forneça o nome do grupo na Info.plist da sua aplicação com a chave PushEngage_App_Group_Key.

7. Adicione a mesma chave e valor no ficheiro Info.plist da Extensão de Serviço de Notificação.

8. Certifique-se de que seleciona o mesmo grupo de aplicações tanto no Target da Aplicação Principal como na Sua_Extensão_de_Serviço_de_Notificação.

Inicializar SDK PushEngage

No seu main.dart, inicialize o SDK PushEngage.

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});
  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    initPlatformState();
  }

  Future<void> initPlatformState() async {
    PushEngage.setAppId("your_pushengage_app_id");
  }
  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'PushEngage',
      debugShowCheckedModeBanner: false,
      home: Home(),
    );
  }
}

No seu AppDelegate.swift da aplicação iOS

import Flutter
import UIKit
import PushEngage

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
    
    override init() {
        super.init()
        PushEngage.swizzleInjection(isEnabled: true)
    }
    
    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        if #available(iOSApplicationExtension 10.0, *) {
            UNUserNotificationCenter.current().delegate = self
        }
        GeneratedPluginRegistrant.register(with: self)
        PushEngage.setBadgeCount(count: 0)
        PushEngage.setNotificationWillShowInForegroundHandler { notification, completion in
            if notification.contentAvailable == 1 {
                // in case developer failed to set completion handler. After 25 sec handler will call.
                completion(nil)
            } else {
                completion(notification)
            }
        }
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

A tratar deepLink

Um deepLinkStream é algo que emite dados de deep link. 

class Home extends StatefulWidget {
  const Home({super.key});

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  late StreamSubscription _deepLinkSubscription;

  @override
  void initState() {
    super.initState();
    PushEngage.deepLinkStream.listen((data) {
      _handleDeepLink(data);
    });
  }

  void _handleDeepLink(Map<String, dynamic>? data) {
    // Parse the deep link and navigate accordingly
    Uri uri = Uri.parse(data?['deepLink']);
    print('Path: ${uri.path}');
    updateResponseText(data.toString());
    switch (uri.path) {
      case 'trigger':
      case '/trigger':
        print(‘your_implementation’)
        break;
    }
  }

c

i

É tudo, integrou agora com sucesso o SDK Flutter para Aplicações Android e iOS.

Se encontrar algum problema, por favor contacte-nos clicando aqui. A nossa equipa de suporte poderá ajudá-lo.

Última atualização em 9 de março de 2026

Interaja e Mantenha Visitantes Depois de Saírem do Seu Website

Aumente o valor de cada visita web com Notificações Push que são difíceis de ignorar.

  • Plano Gratuito para Sempre
  • Configuração Fácil
  • Suporte 5 Estrelas