Integrando com SDK Flutter

Aqui estão os passos e dicas para conseguir fazer a integração da Dito dentro seu app.

Antes de fazer a instalação da SDK Flutter é importante entender os conceitos da integração e executar configurações de um projeto Firebase (caso for utilizar notificações mobile).

flutter pub add dito_sdk

Como implementar

Aqui estão exemplos práticos para usar esses métodos em Flutter:

import 'package:dito_sdk/dito_sdk.dart';

Depois de importado devemos fazer a autenticação da lib para sua conta Dito.

final dito = DitoSDK();

// Inicializa a SDK com suas chaves de API
dito.initialize(apiKey: 'sua_api_key', secretKey: 'sua_secret_key');

Substitua os valores 'sua_api_key' e 'sua_secret_key' pelos valores que pode-se encontrar no painel CRM da Dito clicanco no ícone engrenagem.

❗️

Mantenha a api key e a secrect key em uma arquivo .env

Agora está apto a utilizar todos os métodos da SDK

Identify

Para fazer o identify, chamar o método identify() passando os parâmetros necessários e em seguida enviar o evento para Dito através do identifyUser()

// Define o ID do usuário
dito.setUserId('id_do_usuario');
dito.identify( "[email protected]", 'João da Silva', '[email protected]', 'São Paulo');
await dito.identifyUser();

Register mobile token

Para fazer o registro, primeiro o usuário deve estar identificado (indicamos chamar o método de registro logo após o identify) , na sequência execute

await dito.registryMobileToken(token: token);

O token pode ser extraído através do método

String? token = await FirebaseMessaging.instance.getToken();

Enviar um Evento para a Dito

Para enviar um evento para Dito é simples

dito.trackEvent(
  eventName: 'comprou produto',
  revenue: 99.90,
  customData: {
    'produto': 'produtoX',
    'sku_produto': '99999999',
    'metodo_pagamento': 'Visa',
  },
);

O objeto custom data é um Dynamic Map, que registra qualquer parâmetro na ficha do usuário.

Notificações push

Para receber notificações push é necessário ter instalado o Firebase em seu projeto (aqui explicamos como configurar), em seguida precisamos executar algumas configurações no código para permitir
receber e mostrar as notificações.

Vamos inicializar o Firebase, a Dito e o serviço de Push no arquivo main.dart

void main() async {
  ...

  	await Firebase.initializeApp();
  
    DitoSDK dito = DitoSDK();
  	dito.initialize(apiKey: 'sua_api_key', secretKey: 'sua_secret_key');

  	await dito.initializePushService();
  ...
}

O método initializePushService irá configurar todo serviço de push, como serviço de leitura das notificações do Firebase quando o aplicativo está em execução, configuração da renderização da mensagem (modelo usando o ícone padrão do aplicativo, título e mensagem) e o serviço de captura do click para gerar estatísticas.

Agora precisamos configurar o código para fazer leitura das notificações que pode chegar quando o aplicativo não estiver sendo executado (não estiver aberto).

No início do arquivo main.dart logo após os imports deve-se registrar o serviço de leitura em segundo plano

// Método para registrar um serviço que irá receber os push quando o app estiver totalmente fechado

@pragma('vm:entry-point')
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
  final notification = DataPayload.fromJson(jsonDecode(message.data["data"]));

  dito.notificationService().showLocalNotification(CustomNotification(
      id: message.hashCode,
      title: notification.details.title || "O nome do aplicativo",
      body: notification.details.message,
      payload: notification));
}