Aviso: Não existe documentação legada disponível para este item, pelo que está a ver a documentação atual.
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:
- Aceda à sua conta PushEngage iniciando sessão com as suas credenciais.
- Navegue para Definições » Instalação e escolha o separador SDK Android

- 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:
- Abra o Xcode e navegue para o seu projeto.
- Selecione Ficheiro » Novo » Destino no menu.
- 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
- Abra o_seu_nome_de_projeto » ios » Podfile.
- 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
- 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
- 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:
- No Xcode, vá a Ficheiro » Novo » Destino.
- 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
- Instale a dependência: Eis o código que precisa de executar na sua linha de comando.
e
pod repo update
pod install
- 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.
- 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.
- Navegue até ao separador Signing & Capabilities.
- 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.