Pular para o conteúdo

Guia de integração básica do SDK do Flutter

Esta seção contém informações sobre como integrar o SDK do Flutter da Pushwoosh em seu aplicativo.

Pré-requisitos

Anchor link to

Para integrar o SDK do Flutter da Pushwoosh em seu aplicativo, você precisará do seguinte:

Passos de integração

Anchor link to

1. Adicionar dependência do SDK do Flutter da Pushwoosh

Anchor link to

Adicione o pacote pushwoosh_flutter ao seu arquivo pubspec.yaml:

pubspec.yaml
dependencies:
flutter:
sdk: flutter
# Use the latest version from https://pub.dev/packages/pushwoosh_flutter
pushwoosh_flutter: ^[LATEST_VERSION]

Verifique a última versão em pub.dev.

Em seguida, execute o seguinte comando no diretório raiz do seu projeto para instalar a dependência:

Terminal window
flutter pub get

Verifique novamente se o pacote está instalado corretamente:

Terminal window
flutter pub deps | grep pushwoosh_flutter
# Example output:
# ❯ flutter pub deps | grep pushwoosh_flutter
# └── pushwoosh_flutter 2.3.11

2. Inicialização do SDK do Flutter

Anchor link to

No componente raiz do seu arquivo main.dart:

  • Importe o pacote pushwoosh_flutter.
  • Inicialize o SDK da Pushwoosh.
  • Chame registerForPushNotifications() em sua lógica de inicialização para se registrar para notificações push.
main.dart
import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
void main() async {
runApp(const MyApp());
Pushwoosh.initialize({
"app_id": "__YOUR_APP_ID__"
});
Pushwoosh.getInstance.registerForPushNotifications();
}

Onde:

  • __YOUR_APP_ID__ é o código da aplicação do Painel de Controle da Pushwoosh.

3. Configuração Nativa do iOS

Anchor link to

3.1 Capabilities

Anchor link to

Para habilitar as Notificações Push em seu projeto, você precisa adicionar certas capabilities.

Na seção Signing & Capabilities, adicione as seguintes capabilities:

  • Push Notifications
  • Background Modes. Após adicionar esta capability, marque a caixa para Remote notifications.

Se você pretende usar Notificações Sensíveis ao Tempo (iOS 15+), adicione também a capability Time Sensitive Notifications.

3.2 Info.plist

Anchor link to

No seu Runner/Info.plist, defina a chave __PUSHWOOSH_DEVICE_API_TOKEN__ para o Token de API de Dispositivo Pushwoosh:

info.plist
<key>Pushwoosh_API_TOKEN</key>
<string>__PUSHWOOSH_DEVICE_API_TOKEN__</string>

3.3 Rastreamento de entrega de mensagens

Anchor link to

Você deve adicionar um target de Notification Service Extension ao seu projeto. Isso é essencial para o rastreamento preciso da entrega e para recursos como Rich Media no iOS.

Siga os passos do guia nativo para adicionar o target da extensão e o código Pushwoosh necessário dentro dele.

Para garantir que a Notification Service Extension esteja devidamente integrada em seu projeto Flutter, você precisa usar a seguinte configuração de Podfile:

Podfile
target 'NotificationServiceExtension' do
use_frameworks!
use_modular_headers!
pod 'PushwooshXCFramework'
inherit! :search_paths
end

3.4 Instalando dependências para o projeto Flutter do iOS

Anchor link to

Para instalar as dependências do projeto Flutter do iOS, execute o seguinte comando:

Terminal window
flutter run

ou navegue para a pasta ios no terminal e execute:

Terminal window
pod install --repo-update

4. Configuração Nativa do Android

Anchor link to

4.1 Instalar dependências

Anchor link to

Certifique-se de que as dependências e plugins necessários sejam adicionados aos seus scripts Gradle:

Adicione o plugin Google Services Gradle às dependências do seu build.gradle de nível de projeto:

android/build.gradle
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.15'
}
}

Aplique o plugin no seu arquivo build.gradle de nível de aplicativo:

app/build.gradle
apply plugin: 'com.google.gms.google-services'

4.2 Adicionar arquivo de configuração do Firebase

Anchor link to

Coloque o arquivo google-services.json na pasta android/app do diretório do seu projeto.

4.3 Adicionar metadados da Pushwoosh

Anchor link to

No seu main/AndroidManifest.xml, adicione o Token de API de Dispositivo Pushwoosh dentro da tag <application>:

AndroidManifest.xml
<meta-data android:name="com.pushwoosh.apitoken" android:value="__YOUR_DEVICE_API_TOKEN__" />

Importante: Certifique-se de dar ao token acesso ao aplicativo correto no seu Painel de Controle da Pushwoosh. Saiba mais

5. Executar o Projeto

Anchor link to
  1. Compile e execute o projeto.
  2. Vá para o Painel de Controle da Pushwoosh e envie uma notificação push.
  3. Você deve ver a notificação no aplicativo.

Integração estendida

Anchor link to

Neste ponto, você já integrou o SDK e pode enviar e receber notificações push. Agora, vamos explorar a funcionalidade principal.

Listeners de eventos de notificação push

Anchor link to

No SDK da Pushwoosh, existem dois listeners de eventos, projetados para lidar com notificações push:

  • O evento onPushReceived é acionado quando uma notificação push é recebida
  • O evento onPushAccepted é acionado quando um usuário abre uma notificação

Você deve configurar esses listeners de eventos logo após a inicialização do SDK no início da aplicação:

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class PushwooshNotificationHandler {
void setupPushListeners(Pushwoosh pushwoosh) {
pushwoosh.onPushReceived.listen((event) {
print("Push received: ${event.pushwooshMessage.payload}");
});
pushwoosh.onPushAccepted.listen((event) {
print("Push accepted: ${event.pushwooshMessage.payload}");
});
}
}

Configuração do usuário

Anchor link to

Ao focar no comportamento e nas preferências individuais do usuário, você pode entregar conteúdo personalizado, levando a um aumento da satisfação e lealdade do usuário.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
void afterUserLogin(User user) {
// Definir ID do usuário
Pushwoosh().setUserId(user.getId());
// Definir e-mail do usuário
Pushwoosh().setEmail(user.getEmail());
// Registrar número de SMS
// Os números de SMS e WhatsApp devem estar no formato E.164 (ex: "+1234567890") e ser válidos
Pushwoosh().registerSmsNumber(user.getSmsNumber());
// Registrar número de WhatsApp
Pushwoosh().registerWhatsappNumber(user.getWhatsappNumber());
// Definindo informações adicionais do usuário como tags para a Pushwoosh
Pushwoosh().setTags({
"age": user.getAge(),
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
}

Tags são pares de chave-valor atribuídos a usuários ou dispositivos, permitindo a segmentação com base em atributos como preferências ou comportamento, o que possibilita o envio de mensagens direcionadas.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class UpdateUser {
void afterUserUpdateProfile(User user) {
// Definir lista de categorias favoritas
Pushwoosh().setTags({
"favorite_categories": user.getFavoriteCategoriesList()
});
// Definir informações de pagamento
Pushwoosh().setTags({
"is_subscribed": user.isSubscribed(),
"payment_status": user.getPaymentStatus(),
"billing_address": user.getBillingAddress()
});
}
}

Eventos são ações ou ocorrências específicas do usuário dentro do aplicativo que podem ser rastreadas para analisar o comportamento e acionar mensagens ou ações correspondentes.

import 'package:pushwoosh_flutter/pushwoosh_flutter.dart';
class Registration {
// Rastrear evento de login
void afterUserLogin(User user) {
Pushwoosh().postEvent("login", {
"name": user.getName(),
"last_login": user.getLastLoginDate()
});
}
void afterUserPurchase(Product product) {
// Rastrear evento de compra
Pushwoosh().postEvent("purchase", {
"product_id": product.getId(),
"product_name": product.getName(),
"price": product.getPrice(),
"quantity": product.getQuantity()
});
}
}

Usando ProGuard

Anchor link to

Assim, você pode receber esta exceção:

java.lang.IllegalStateException: Could not find class for name: com.pushwoosh.plugin.PushwooshNotificationServiceExtension

Existem duas soluções neste caso:

  1. Use o comando flutter build apk --no-shrink para compilar seu código sem ofuscação.
  2. Ou você pode habilitar manualmente o ProGuard e adicionar as regras necessárias.

Para habilitar o ProGuard em seu projeto, adicione as seguintes strings ao seu arquivo build.gradle:

build.gradle
buildTypes {
release {
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}

Em seguida, adicione as seguintes regras ao android/app/proguard-rules.pro

proguard-rules.pro
#Pushwoosh Flutter
-keep class com.pushwoosh.plugin.PushwooshPlugin { *; }
-keep class com.pushwoosh.plugin.PushwooshNotificationServiceExtension { *; }

Solução de problemas

Anchor link to

Se você encontrar algum problema durante o processo de integração, consulte a seção de suporte e comunidade.