Suporte a notificações push

Documento

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:

  1. Adicionar dependências Adicione os pacotes necessários ao seu pubspec.yaml
    yaml
    dependencies:
      firebase_core: ^2.24.2
      firebase_messaging: ^14.7.10
  2. 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.
  3. Inicialize o Firebase no Flutter Atualize seu main.dart:
    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:

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

  1. Android
    • Histórico: No seu Android MainActivity, substitua onNewIntent para passar a intenção para o Singular:
      kotlin
      // 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.
  2. iOS
    • Em segundo plano: Chame handlePushNotification em seu código Dart ao processar notificações em segundo plano:
      dart
      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:
      swift
      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)
        }
      }

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:

dart
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

Etapa 4: Validação/verificação do recebimento da notificação por push na chamada de sessão inicial

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&current_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%2Fmain

    Se 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
    newsapp://article?id=12345
    Tópicos em destaque
    newsapp://trending
    Desporto
    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.