Suporte ao rastreamento de reengajamento usando notificações push
O Singular suporta o rastreamento de notificações push para melhorar a medição do reengajamento. Ao integrar o Firebase Cloud Messaging (FCM) com o SDK do Singular, é possível rastrear os usuários que interagem com as notificações push e atribuí-los adequadamente.
Para garantir um rastreamento preciso, siga as diretrizes de implementação abaixo e certifique-se de que os dados de notificação sejam passados corretamente para o Singular SDK.
Por que o rastreamento de notificações push é importante?
As notificações push são uma ferramenta chave de re-engajamento, mas rastreá-las requer uma integração correta. O Singular garante que os usuários que interagem com as notificações sejam devidamente atribuídos, ajudando a otimizar campanhas de marketing e estratégias de engajamento.
Guia de implementação
Etapa 1: Configurando notificações push do Firebase no Flutter
Primeiro, integre o Firebase em seu aplicativo Flutter para lidar com notificações push. Siga estas etapas:
-
Adicionar dependências Adicione os pacotes necessários ao seu pubspec.yaml
dependencies: firebase_core: ^2.24.2 firebase_messaging: ^14.7.10
-
Configurar o Firebase
- Android: Coloque google-services.json em android/app/ e atualize os arquivos do Gradle (consulte ).
- iOS: Coloque GoogleService-Info.plist na pasta Xcode Runner e atualize Podfile com os pods do Firebase.
-
Inicialize o Firebase no Flutter Atualize seu main.dart:
import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); print("Background message: ${message.messageId}"); } void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); runApp(MyApp()); }
Etapa 2: manipulando notificações push no Flutter
Quando seu aplicativo recebe uma notificação push do Firebase, você precisa capturar os dados da notificação e prepará-los para o Singular. Veja como lidar com notificações em diferentes estados do aplicativo:
Android
- Primeiro plano: Lidar com as notificações diretamente no Dart.
- Fundo/Terminado: Interface com a camada nativa do Android.
Actualize o seu código Dart:
class _MyAppState extends State<MyApp> {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
@override
void initState() {
super.initState();
// Request permission
_firebaseMessaging.requestPermission();
// Foreground notifications
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print('Foreground message: ${message.messageId}');
String title = message.notification?.title ?? '';
String body = message.notification?.body ?? '';
Map<String, dynamic> data = message.data;
// Process notification for Singular (foreground)
_processNotificationForSingular(title, body, data);
});
// Background/Opened from notification
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('Message opened: ${message.messageId}');
_processNotificationForSingular(
message.notification?.title ?? '',
message.notification?.body ?? '',
message.data,
);
});
}
void _processNotificationForSingular(
String title, String body, Map<String, dynamic> data) {
print('Notification - Title: $title, Body: $body, Data: $data');
// Add Singular handling here (Step 3)
}
}
iOS
- Primeiro plano: Semelhante ao Android, tratado em Dart.
- Fundo/Terminado: Requer integração nativa do iOS.
Etapa 3: Interface das notificações push com o SDK do Singular
Para garantir que o Singular rastreie os engajamentos de notificações push para atribuição, é necessário passar o payload da notificação para o SDK do Singular. Isso envolve código Dart e alguma configuração nativa.
Fornecendo payload de push
-
Android
-
Histórico: No seu Android MainActivity, substitua onNewIntent para passar a intenção para o Singular:
// MainActivity.kt package com.example.yourapp import io.flutter.embedding.android.FlutterActivity import android.content.Intent import com.singular.sdk.SingularBridge class MainActivity: FlutterActivity() { override fun onNewIntent(intent: Intent) { super.onNewIntent(intent) SingularBridge.onNewIntent(intent) } }
- Terminado: Tratada automaticamente pela camada de ponte do Singular, sem necessidade de código adicional.
-
Histórico: No seu Android MainActivity, substitua onNewIntent para passar a intenção para o Singular:
-
iOS
-
Em segundo plano: Chame handlePushNotification em seu código Dart ao processar notificações em segundo plano:
void _processNotificationForSingular( String title, String body, Map<String, dynamic> data) { Singular.handlePushNotification(data); }
-
Terminado: Atualize AppDelegate.swift para lidar com as opções de lançamento:
import UIKit import Singular @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { SingularAppDelegate.shared().launchOptions = launchOptions return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
-
Em segundo plano: Chame handlePushNotification em seu código Dart ao processar notificações em segundo plano:
Definição de caminhos de link de envio na configuração Singular
Configure o Singular SDK para reconhecer caminhos específicos em seus payloads de notificação para atribuição de reengajamento:
import 'package:singular_flutter_sdk/singular.dart'; // Adjust import
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
// Singular configuration
SingularConfig config = SingularConfig(
apiKey: 'your_api_key',
secret: 'your_secret',
);
// Set push notification link paths (same for iOS and Android)
config.pushNotificationsLinkPaths = [
['sng_link'],
['rootObj', 'nestedObj', 'anotherNested', 'singularLink'],
];
// Initialize Singular
Singular.init(config);
runApp(MyApp());
}
Guia de validação
A chamada da API do SDK Singular garante que o link do payload da notificação push seja passado corretamente sob o parâmetro reservado singular_link na chamada da sessão inicial.
Exemplo:
https://sdk-api-v1.singular.net/api/v1/start?a=<SDK-Key>&ab=arm64-v8a&aifa=180f63a1-0955-47b4-896a-d75ae3d35955&apc=Marchv7&apg=1&aps=Intex&asid_scope=1&asid_timeinterval=0.112&av=20.0&br=samsung&c=wifi¤t_device_time=1740905574088&de=m15x&device_type=phone&device_user_agent=Dalvik/2.1.0 (Linux; U; Android 14; SM-E156B Build/UP1A.231005.007)&dnt=0&event_index=3&fi=e5bRZuVddO8:APA91bHXI3OmFZv3-r8f03zyji2kvKWbIngwf8KBDHk4Rj5q5MEeEm6EtzC-if1vpJRmuYLyGdAcSz9-nc49eIjD86xwj-n9J4jKucqMVt9mP8ICifP0arA&i=net.singular.singularsampleapp&install_time=1740905507036&is=false&k=SDID&lag=0.067&lc=en_IN&ma=samsung&mo=SM-E156B&n=Singular-TestApp-Debug&p=Android&pr=m15xnndins&pu=1&rt=json&s=1740905574084&sdk=Singular/v12.6.2&singular_install_id=2dc5dfc2-a2a8-484a-aad1-fed6cb7a3023&singular_link=https://singularassist2.sng.link/C4nw9/r1m0?_dl=singular://test&_smtype=3&src=com.android.shell&u=75f7b911-5a77-597d-8892-56f5e0e210ff&update_time=1740905507036&v=14&h=1e723fd90344d5d037059f110611ed1d84fbba88
Como alternativa, você pode usar o Console do SDK Singular para verificar o link de rastreamento da notificação por push no URL do Deeplink, conforme demonstrado abaixo.
Ao verificar isso, você pode confirmar que os compromissos de notificação por push são rastreados corretamente no Singular SDK.
Observações:
- Observe que, ao contrário do código singularLinksHandler, o Singular SDK não fornece retornos de chamada de carga de push para esse recurso. É responsabilidade do desenvolvedor do aplicativo ler os dados da notificação push e implementar a lógica de deep linking para redirecionar os usuários para páginas de produtos específicos dentro do aplicativo. Nesta solução, o Singular recupera o payload da notificação push quando o usuário toca na notificação e inclui esse payload no evento de início de sessão do SDK disparado por Singular.start(config). Esses dados são então processados no backend do Singular para atribuir o ponto de toque/clique da notificação push e registrá-lo para rastreamento de reengajamento.
-
Temos um mecanismo de segurança que permite apenas domínios de link Singular do par de valores-chave personalizado passado na carga útil da notificação push. Especificamente, apenas os domínios sng.link predefinidos na página Singular Manage Links são permitidos.
Por exemplo:
https://prod_test.sng.link/B0s2a/51oi?_dl=singular%3A%2F%2FmainSe pretender envolver links Singular num domínio diferente (por exemplo, um domínio ESP para fornecedores de serviços de e-mail), deve configurar explicitamente o domínio adicionando a seguinte opção na sua configuração: Isso garante que o domínio externo seja reconhecido e permitido na estrutura do Singular. Consulte o exemplo de configuração abaixo. config.withESPDomains(Arrays.asList("sl.esp.link"));
-
Se você precisar acionar diferentes deep links com base nas ações do usuário a partir de uma única notificação por push, poderá usar um único link de rastreamento Singular e modificar dinamicamente os redirecionamentos.
Exemplo:
Uma notificação push para notícias de última hora pode oferecer várias opções de deep link! Em vez de criar vários links de rastreamento, configure um link de rastreamento Singular e ajuste os redirecionamentos dinamicamente com base na seleção do usuário.
Ler as últimas notícias →
Tópicos em destaque →newsapp://article?id=12345
Desporto →newsapp://trending
newsapp://sports
Saiba mais sobre a substituição de redireccionamentos em ligações de seguimento Singular.
Sucesso!
Seguindo essas etapas, seu aplicativo agora está configurado para rastrear interações de notificação por push usando o Singular. Isso ajuda a melhorar os insights de desempenho da campanha e garante uma atribuição precisa de reengajamento.