Skip to main content

Command Palette

Search for a command to run...

Utilizando o Firebase Analytics no Flutter

Série: Dominando o Firebase em Aplicativos Flutter

Updated
18 min read
Utilizando o Firebase Analytics no Flutter

Introdução

O Firebase Analytics, é uma ferramenta gratuita do Firebase, que coleta dados de uso, engajamento do usuário e comportamento para o seu aplicativo.

Com ele você pode obter insights de como as pessoas usam o seu aplicativo.

Saber quais partes ou funcionalidades são mais populares e por quanto tempo são utilizadas além de podermos registrar eventos e propriedades do usuário.

Imagine um aplicativo de exercícios físicos, o analytics pode registrar o exercício favorito de um usuário ou registrar o gênero favorito de um usuário para um aplicativo de música.

Outro exemplo, seria rastrear quando alguém termina um nível de jogo, compra algo ou usa uma parte específica do seu aplicativo.

No geral com os dados do Analytics você pode tomar decisões mais acertadas sobre marketing de aplicativos e otimizações de desempenho.

Você também pode olhar esse video do canal do Firebase onde eles explicam resumidamente como funciona a ferramenta.

Este artigo faz parte da série “Dominando o Firebase em Aplicativos Flutter”, uma sequência de posts que explora como utilizar todos os produtos do Firebase em conjunto com o Flutter. Confira as demais publicações da série no meu blog para aprofundar seus conhecimentos. 📚

Benefícios do Firebase Analytics

Dashboard of Firebase Analytics

  • Vários tipos de métricas: Ajuda a descrever comportamentos dos usuários – como informações geográficas, demográficas etc.

    • Informações demográficas  — quem são seus usuários.

    • Retenção  — com que regularidade eles usam seu aplicativo.

    • Engajamento  — quanto tempo eles gastam e em quê.

    • Receita média  — mostra quanto eles gastaram, se seu aplicativo oferecer suporte a compras no aplicativo

  • Rastreamento de eventos: Você pode rastrear eventos que ocorrem dentro do seu aplicativo. Por exemplo um aplicativo de exercícios físicos pode registrar o exercício favorito de um usuário ou um aplicativo de música pode registrar o gênero favorito do usuário.

  • Integração com o Firebase: O Analytics tem integração nativa com outras ferramentas do Firebase, como Crashlytics, fornecendo dados mais abrangentes sobre a saúde e o comportamento de seus aplicativos.

Configurando e utilizando em seu projeto 🛠️

1 — Habilitando o Analytics

Vá para o console do firebase e no painel esquerdo vá para Analytics no menu e clique no botão Ativar o Google analytics.

Firebase console

Em seguida ele vai abrir uma nova tela, apenas clique em Ativar, veja a imagem abaixo:

Em seguida uma nova tela será aberta pedindo pra configurar o Firebase no seu aplicativo caso ainda não tenha feito, se sim apenas prossiga clicando em concluir:

2 — Adicionando a dependência em seu projeto

Vamos começar adicionando a dependência ao nosso arquivo pubspec.yaml.

Instale o pacote a partir da linha de comando com o Flutter:

$ flutter pub add firebase_analytics

Ou adicione firebase_crashlytics diretamente em seu pubspec.yaml e execute flutter pub get no momento da criação desse post ele está na versão 4.1.1 .

dependencies:
 firebase_analytics: ^11.3.3

Agora, no seu código Dart, você pode importar o package:

import 'package:firebase_crashlytics/firebase_analytics.dart';

Painel do Analytics

Analytics do Firebase fornece um dashboard que mostra um gráfico somativo de métricas-chave para seu aplicativo. Aqui você pode obter as informações básicas e dados de seus usuários, como usuários ativos, usuários ativos nos últimos 30 minutos, principais eventos de conversão, receita total, adoção de versão do aplicativo, etc.

Bom não é mesmo? 😎

Eventos e Conversões

Eventos: No centro do Firebase Analytics, os eventos são o que acontece no seu aplicativo, como ações do usuário ou eventos do sistema ou erros.

Conversões: São ações importantes que os usuários do site ou app realizam e que os transformam em clientes, geram leads ou assinantes. São exemplos de conversões: compras, inscrições, entre outras.

Veremos um pouco mais sobre isso aditante.

O Analytics registra automaticamente alguns eventos para você. Não é necessário adicionar códigos para recebê-los. Caso o aplicativo precise coletar outros dados, é possível registrar até 500 tipos diferentes de eventos do Analytics no app, veja abaixo alguns exemplos:

Eventos automáticos são registrados no firebase automaticamente

first_open: Na primeira vez que um usuário inicia um app após a instalação ou reinstalação. Este evento não é acionado quando um usuário faz o download do app em um dispositivo, mas quando ele o utiliza pela primeira vez..

in_app_purchase : se seu aplicativo oferece compras no aplicativo, automaticamente um evento de compra no aplicativo será registrado para você, contendo o valor da compra e o produto que foi adquirido.

session_start: Quando um usuário interage com o app ou site.

Eventos sugeridos

O próprio google nos recomenda alguns eventos essenciais aos clientes em todos os verticais de negócio. O SDK define uma série de eventos sugeridos que são comuns entre diferentes tipos de aplicativos, incluindo aplicativos de varejo e comércio eletrônico, viagens e jogos.

Para saber mais sobre esses eventos e quando usá-los, navegue pelos artigos e clique nesse link e veja a lista completa dos eventos.

 Eventos sugeridos (eventos pré-definidos)

Nos eventos sugeridos, você pode usar:

  • Jogos

  • Varejo/comércio eletrônico

  • Empregos

  • Educação

  • Viagem

  • Ofertas locais

  • Imobiliária

Por exemplo, se você quiser ver quando um usuário adicionar um produto no carrinho de compras, você pode usar o evento add_to_cart que se enquadra na categoria de eventos varejo/comércio eletrônico ou usar o evento view_item que indica que parte do conteúdo foi exibido ao usuário.

Eventos personalizados

Se seu aplicativo tiver necessidades específicas não cobertas por um tipo de evento sugerido, você pode registrar seus próprios eventos personalizados

Certifique-se de apenas criar eventos personalizados quando nenhum outro evento funciona para o seu exemplo de utilização. Os eventos personalizados não são apresentados na maioria dos relatórios padrão e, por isso, tem de configurar explorações ou relatórios personalizados para obter uma análise significativa.

Enviando eventos para Analytics ⚡️

Para implementar eventos de conversão com Firebase Analytics no seu app Flutter, a estratégia é identificar os principais pontos de interação do usuário com seu app. Esses eventos de conversão geralmente estão ligados a ações que têm impacto nos objetivos do app, como engajamento, retenção ou receita.

Sugiro que passe um tempo mapeando quais partes do seu aplicativo seriam importantes para estarem no analytics ✍🏻.

Para enviar dados de eventos ao Analytics, no seu main.dart adicione o seguinte trecho de código:

Future<void> main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
    FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(true);
    runApp(MyApp());
}

Antes de usar o Firebase Analytics, você precisa inicializar o Firebase.

Agora execute seu aplicativo e vá para o Dashboard do Analytics no console do firebase. A princípio, não haverá dados do usuário, pois o aplicativo é criado pela primeira vez, então levará tempo, e também não há eventos integrados no flutter, mas podemos ver um dado que é atualizado rapidamente que é os usuarios ativos no momento.

Usuários ativos nos últimos 30 minutos

Você pode ver a atividade dos usuários nos últimos 30 minutos após buildar seu aplicativo no meu caso levou uns 3 minutos para aparecer essa informação no painel.

Adicionando eventos no Firebase Analytics

  • Eventos: o que está acontecendo no seu aplicativo, como ações do usuário, eventos do sistema ou erros. Você pode relatar até 500 tipos diferentes de Eventos por aplicativo e pode associar até 25 parâmetros exclusivos a cada tipo de Evento.

    Cada tipo de evento é identificado por um nome exclusivo. Os nomes de eventos podem ter até 40 caracteres, podem conter apenas caracteres alfanuméricos e sublinhados ("_") e devem começar com um caractere alfabético.

  • Propriedades do usuário: atributos que você define para descrever segmentos da sua base de usuários, como preferência de idioma ou localização geográfica.

Certos eventos são recomendados para todos os aplicativos, outros são recomendados para tipos de negócios ou verticais específicos.

Você deve enviar eventos sugeridos junto com seus parâmetros prescritos, para garantir o máximo de detalhes disponíveis em seus relatórios e para se beneficiar de recursos e integrações futuras conforme eles se tornam disponíveis.

await FirebaseAnalytics.instance
  .logBeginCheckout(
    value: 10.0,
    currency: 'USD',
    items: [
      AnalyticsEventItem(
        itemName: 'Socks',
        itemId: 'xjw73ndnw',
        price: '10.0'
      ),
    ],
    coupon: '10PERCENTOFF'
  );

Eventos predefinidos: O evento logBeginCheckout é criado especificamente para rastrear o início de um processo de checkout ele é um evento padrão do analytics para aplicativos de compras.

Eventos personalizados: Se seu aplicativo tiver necessidades específicas não cobertas por um tipo de evento sugerido, você pode registrar seus próprios eventos personalizados, conforme mostrado neste exemplo:

await FirebaseAnalytics.instance.logEvent(
    name: "share_image",
    parameters: {
        "image_name": name,
        "full_text": text,
    },
);

logEvent é um método de uso geral para registrar eventos personalizados com um nome e parâmetros definidos por você.

O evento do exemplo se chama share_image.

parameters: Aqui você pode passar informações adicionais, como o método de cadastro (ex: email, Google, etc.) ou até mesmo o ID do usuário recém-criado.

Parâmetros personalizados podem ser usados como dimensões ou métricas em relatórios do Analytics.

Aqui estão algumas sugestões de onde você pode implementar eventos de conversão 🎯

  1. Cadastro/Login de Usuário:

    • Evento: sign_up ou login

    • Quando um usuário criar uma conta ou fizer login no app, você pode capturar esses eventos para medir o engajamento de novos usuários e a retenção de antigos.

  2. Interações com Funcionalidades Importantes:

    • Evento: Defina eventos personalizados como feature_usage para funcionalidades que você considera chave no app.

    • Exemplo: No caso de um app de adoção de pets, pode ser quando o usuário visualizar um pet ou enviar uma solicitação de adoção.

  3. Compra ou Ações Monetizadas (se houver):

    • Evento: purchase ou um evento personalizado como subscription_upgrade

    • Caso o app tenha compras ou assinatura premium, é essencial rastrear quando um usuário realiza uma compra ou upgrade.

  4. Finalização de Fluxos Críticos:

    • Evento: conversion

    • Esse evento pode ser acionado quando o usuário completar um fluxo essencial para o objetivo do app. No seu caso, seria ideal rastrear quando um usuário adota um pet com sucesso, por exemplo.

Esses eventos darão insights sobre o comportamento do usuário e ajudarão a medir o sucesso das conversões dentro do seu app.

Onde integrar os eventos no aplicativo?

Para chamar os métodos do Firebase Analytics no Flutter, o ideal é integrá-los nos momentos corretos do ciclo de vida das telas e nas interações do usuário. Aqui estão os melhores pontos para chamar os métodos do Analytics no seu app Flutter:

1. Inicialização do App (Primeira execução ou navegação)

Se você deseja rastrear a primeira vez que o usuário abre o app ou chega em uma tela específica, pode usar o método logEvent no momento em que a tela é construída ou quando o app é iniciado.

  •   @override
      void initState() {
        super.initState();
        FirebaseAnalytics.instance.logEvent(name: 'app_open');
      }
    

Esse código pode ser colocado no initState da tela inicial do seu app ou na primeira página carregada após o Splash Screen.

2. Navegação Entre Telas:

Use o Firebase Analytics para rastrear quando o usuário navega entre telas ou páginas importantes no seu app. Para isso, você pode utilizar o método setCurrentScreen quando a navegação for concluída.

  •   @override
      void didChangeDependencies() {
        super.didChangeDependencies();
        FirebaseAnalytics.instance.setCurrentScreen(
          screenName: 'home_screen',
          screenClassOverride: 'HomeScreen',
        );
      }
    

Chame esse método quando o usuário acessar uma nova página, como na função de navegação ou ao construir o widget da página.

3. Interações de Usuário:

Para eventos que envolvem interações específicas, como clicar em um botão, enviar um formulário ou qualquer outra ação importante, você deve chamar o método logEvent diretamente dentro do callback do evento.

  •   ElevatedButton(
        onPressed: () {
          FirebaseAnalytics.instance.logEvent(name: 'button_click', parameters: {
            'button_name': 'adopt_pet',
          });
        },
        child: Text('Adotar Pet'),
      )
    

Isso vai garantir que eventos de interação como cliques ou ações de formulário sejam registrados corretamente.

4. Finalização de Páginas

  • Se você deseja rastrear quando o usuário deixa uma página ou completa uma tarefa (ex: finaliza o cadastro), você pode chamar o logEvent ou setCurrentScreen ao sair de uma página ou ao final de um fluxo de navegação.

Onde evitar? 🧐

  • Construtor de Widgets: Evite chamar eventos de Analytics no build() de widgets. Isso pode resultar em chamadas excessivas e impactar o desempenho, já que o build pode ser chamado várias vezes durante a execução de uma página.

Conversões

São seus eventos mais importantes que contribuem para o sucesso do seu negócio. Quando você rotula um evento como um evento de conversão, ele será carregado imediatamente pelo SDK para torná-lo acionável mais rapidamente.

Coisas como fazer uma compra, inscrever-se para uma conta, compartilhar um produto e assim por diante são todos bons eventos que devem ser rotulados como conversões.

Por exemplos poderiamos ter uma conversão chamada begin_checkout que é quando um usuário clica no botão Checkout em seu carrinho de compras.

Audiências

São grupos específicos de usuários segmentados que você pode definir com base em certos critérios ou eventos dentro do seu app Flutter.

Isso permite que você segmente os usuários com base em atributos como idade, localização, eventos específicos que realizaram no app, ou até ações como interações com certas telas ou cliques em botões.

Essas audiências são úteis para acompanhar o comportamento de grupos específicos, criando campanhas personalizadas e direcionadas, como enviar notificações específicas via Firebase Cloud Messaging.

Por exemplo, poderiamos criar um audiência de usuários que visualizam produtos várias vezes, mas não fazem uma compra e nesse caso enviar enviar notificações específicas para esse público.

Rastrear propriedades do usuário

Você pode definir propriedades de asuário do Analytics para descrever os usuários do seu aplicativo. Analisar comportamentos de vários segmentos de usuários aplicando essas propriedades como filtros aos seus relatórios. Veja o exemplo abaixo:

await FirebaseAnalytics.instance
  .setUserProperty({
    name: 'favorite_food',
    value: favoriteFood,
  });

Rastrear IDS do usuário

O Google Analytics tem uma setUserID método, que permite que você armazene um ID de usuário para o indivíduo que usa seu aplicativo.

Observação: você é responsável por garantir que seu uso do ID do usuário esteja de acordo com os Termos de Serviço do Google Analytics .

Isso inclui evitar o uso de informações de identificação pessoal não permitidas e fornecer aviso apropriado sobre seu uso de identificadores em sua Política de Privacidade

await FirebaseAnalytics.instance
  .setUserId({
    id: 'xxxxxxx'
  });

Rastrear visualizações de tela

O Analytics rastreia transições de tela e anexa informações sobre a tela atual a eventos, permitindo que você rastreie métricas como engajamento do usuário ou comportamento do usuário por tela.

O método setCurrentScreen é usado para definir o nome da tela atual e a classe, que podem então aparecer no console do Firebase. Isso ajuda você a entender o fluxo de interação do usuário no seu aplicativo e identificar telas e caminhos de navegação populares onde os usuários passam a maior parte do tempo.

Entender isso pode ajudar você a tomar decisões baseadas em dados sobre em quais áreas do seu aplicativo concentrar seus esforços de desenvolvimento e melhoria.

await FirebaseAnalytics.instance.setCurrentScreen(
  screenName: 'screen_name',
  screenClassOverride: 'screen_class',
);

Firebase Analytics Observer ao Navigator (opcional)

Se você quiser rastrear eventos de navegação, precisará adicionar o FirebaseAnalyticsObserver à propriedade navigatorObservers do seu MaterialApp , WidgetsApp ou CupertinoApp .

Veja o exemplo abaixo: ⬇️

class MyApp extends StatelessWidget {
  // Inicializando o FirebaseAnalytics
  static FirebaseAnalytics analytics = FirebaseAnalytics();
  static FirebaseAnalyticsObserver observer =
      FirebaseAnalyticsObserver(analytics: analytics);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Firebase Analytics Example',
      navigatorObservers: [
        observer,  // Adiciona o FirebaseAnalyticsObserver ao sistema de navegação
      ],
      home: MyHomePage(),
    );
  }
}

O FirebaseAnalyticsObserver é uma classe do pacote firebase_analytics no Flutter, usada para integrar o Firebase Analytics ao sistema de navegação do Flutter.

Isso permite que eventos de navegação dentro do app sejam automaticamente rastreados e enviados ao Firebase Analytics, facilitando o acompanhamento de quais telas estão sendo acessadas pelos usuários e em que ordem.

Quando você adiciona o FirebaseAnalyticsObserver ao seu app Flutter, ele monitora as mudanças de rota (ou páginas) dentro da aplicação e envia eventos correspondentes para o Firebase Analytics, como o nome da rota que foi visitada. Isso é útil para medir o comportamento do usuário, como quais telas ele acessa mais frequentemente ou se ele completa um fluxo específico no app.

Conferindo os eventos no painel

Você pode encontrar estatísticas agregadas sobre os eventos nos painéis de controle do Console do Firebase. Eles são atualizados periodicamente ao longo do dia.

Console do Firebase Analytics

🛑 Segundo a documentação, pode ser que leve de 1h até 24 horas para aparecer os eventos clicados no aplicativo.

Siga para a proxíma seção: ⬇️

Exibir eventos na depuração (DebugView)

Com o modo DebugView, você pode ver dados brutos de eventos registrados pelo seu app quase em tempo real em dispositivos de desenvolvimento.

Isso é muito útil para fins de validação durante a fase de instrumentação do desenvolvimento e pode ajudar você a descobrir erros e falhas na sua implementação do Analytics, além de confirmar se todas as propriedades dos usuários e eventos estão sendo registrados corretamente.

Android

Para habilitar a depuração em dispositivos Android, execute o seguinte comando no seu terminal:

adb shell setprop debug.firebase.analytics.app [your_app_package_name]

O modo de depuração vai permanecer ativado até que você execute a linha de comando a seguir:

adb shell setprop debug.firebase.analytics.app .none.

iOS

Para habilitar o debug view para iOS, comece abrindo a pasta ios no Xcode. Em seguida, navegue até Product->Scheme->Edit Scheme.

Seguida adicione os seguintes argumentos -FIRDebugEnabled e -FIRDebugDisabled

Xcode

Para adicionar esses argumentos, edite o esquema do projeto e adicione uma nova entrada a "Arguments Passed on Launch". conforme mostrado acima

🛑 Atenção! O debug view no iOS só funcionará se você executar seu aplicativo diretamente do Xcode . Executar o aplicativo usando flutter run ou por meio de outra IDE não acionará os argumentos a serem executados na inicialização.

Para desabilitar a depuração, você pode executar os seguintes argumentos na inicialização: *-*FIRDebugDisabled e -FIRAnalyticsDebugDisabled.

Visualizando o DebugView 💡

Rodei o aplicativo no android e os eventos apareceram em tempo real no painel como mostrado na imagem abaixo:

DebugView do Analytics

O streaming de segundos (coluna do meio) exibe os eventos que foram registrados nos últimos 60 segundos. O streaming de minutos (coluna da esquerda) exibe uma série de arquivos de eventos nos últimos 30 minutos.

A coluna da direita exibe os principais eventos registrados no intervalo de 30 minutos, bem como as propriedades do usuário atual do dispositivo de desenvolvimento selecionado no momento.

Saiba mais sobre o debug view no link: 🔗

Isolando a regra do Analytics com o padrão Service

A finalidade da camada de serviço, por outro lado, é encapsular a lógica de negócios em um único local para promover a reutilização de código e a separação de interesses.

Basicamente seria isolar uma tarefa específica em um outro objeto sendo assim assumindo uma responsabilidade muito estreita de realizar alguma atividade útil.

Então, vamos criar um serviço para integrar o Firebase Analytics ao seu projeto Flutter e gerenciar os relatórios de erros. 👇🏻

import 'package:firebase_analytics/firebase_analytics.dart';

import 'package:flutterfirebaseapp/errors/failure.dart';

abstract class AnalyticsService {
  /// If analytics is supported on the current platform.
  Future<void> initAnalytics();

  /// If analytics is supported on the current platform.
  Future<bool> isSupported();

  /// Retrieves the session id from the client. Returns null if analyticsStorageConsentGranted is false or session is expired.
  Future<int?> getSessionId();

  /// Logs the standard `app_open` event.
  Future<void> logAppOpen();

  /// Logs events customizeds with the given [name] and [parameters].
  /// [name] is the name of the event.
  /// [parameters] are the optional parameters.
  Future<void> logEvent({
    required String name,
    Map<String, Object>? parameters,
  });

  /// Logs the standard `screen_view` event.
  /// [screenClass] is the class of the screen.
  /// [screenName] is the name of the screen.
  /// [parameters] are the optional parameters.
  Future<void> logScreenView({
    String? screenClass,
    String? screenName,
    Map<String, Object>? parameters,
  });

  /// Logs the standard `sign_up` event.
  /// [signInMethod] is the method used to sign up.
  /// [parameters] are the optional parameters.
  Future<void> logSignUp({
    required String signUpMethod,
    Map<String, Object>? parameters,
  });

  /// Clears all analytics data for this app from the device and resets the app instance id.
  Future<void> resetAnalyticsData();

  /// Adds parameters that will be set on every event logged from the SDK, including automatic ones.
  /// [defaultParameters] are the default parameters.
  Future<void> setDefaultEventParameters(
    Map<String, Object?>? defaultParameters,
  );

  /// Sets the duration of inactivity that terminates the current session.
  /// [timeout] is the duration of inactivity that terminates the current session.
  Future<void> setSessionTimeoutDuration(Duration timeout);

  /// Sets the user id.
  /// [id] is the user id.
  Future<void> setUserId({String? id});

  /// Sets the user property.
  /// [name] is the name of the property.
  /// [value] is the value of the property.
  Future<void> setUserProperty({
    required String name,
    required String? value,
  });
}

/// A class that extends [AnalyticsService] to log events and
/// screen views for Google and Firebase Analytics
class CustomAnalyticsService implements AnalyticsService {
  final _firebaseAnalytics = FirebaseAnalytics.instance;
  @override
  Future<void> initAnalytics() async {
    await _firebaseAnalytics.setAnalyticsCollectionEnabled(true);
  }

  @override
  Future<int?> getSessionId() async {
    try {
      return await _firebaseAnalytics.getSessionId();
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried get session id from analytics: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<bool> isSupported() async {
    try {
      return await _firebaseAnalytics.isSupported();
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried check if analytics is supported: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> logAppOpen({Map<String, Object>? parameters}) async {
    try {
      await _firebaseAnalytics.logAppOpen(parameters: parameters);
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register a log for app open: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> logEvent({
    required String name,
    Map<String, Object>? parameters,
  }) async {
    try {
      await _firebaseAnalytics.logEvent(
        name: name,
        parameters: parameters,
      );
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register a event: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> logScreenView({
    String? screenClass,
    String? screenName,
    Map<String, Object>? parameters,
  }) async {
    try {
      await _firebaseAnalytics.logScreenView(
        screenClass: screenClass,
        screenName: screenName,
        parameters: parameters,
      );
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register a event for Screen View: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> logSignUp({
    required String signUpMethod,
    Map<String, Object>? parameters,
  }) async {
    try {
      await _firebaseAnalytics.logSignUp(
        signUpMethod: signUpMethod,
        parameters: parameters,
      );
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register a log for sign up: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> resetAnalyticsData() async {
    try {
      await _firebaseAnalytics.resetAnalyticsData();
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried reset log from analytics data: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> setDefaultEventParameters(
    Map<String, Object?>? defaultParameters,
  ) async {
    try {
      await _firebaseAnalytics.setDefaultEventParameters(defaultParameters);
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried set default event parameters on analytics: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> setSessionTimeoutDuration(Duration timeout) async {
    try {
      await _firebaseAnalytics.setSessionTimeoutDuration(timeout);
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried set session timeout on analytics: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> setUserId({String? id}) async {
    try {
      await _firebaseAnalytics.setUserId(id: id);
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register user id on analytics: exception $exception stackTrace: $stackTrace",
      );
    }
  }

  @override
  Future<void> setUserProperty({
    required String name,
    required String? value,
  }) async {
    try {
      await _firebaseAnalytics.setUserProperty(name: name, value: value);
    } catch (exception, stackTrace) {
      throw AnalyticsException(
        "Error when tried register user property on analytics: exception $exception stackTrace: $stackTrace",
      );
    }
  }
}

Referências:

https://firebase.flutter.dev/docs/analytics/get-started

https://www.walturn.com/insights/how-to-set-up-analytics-in-flutter-using-firebase

https://firebasetutorials.com/events-in-firebase-analytics/

Conclusão

Bom é isso 😎.

Spark via Dribble

O Firebase Analytics é uma ótima ferramenta para entender melhor o comportamento do seu cliente e o desempenho do aplicativo combinado a outros produtos do Firebase. 🔥

Neste artigo, você aprendeu como configurar e preparar nossos aplicativos Flutter para serem usados ​​com o Firebase Analytics. 📚

Aqui está o código do projeto de exemplo no github. 🔗

Em artigos futuros da série, veremos como usar outros recursos do Firebase, como Authentication, Remote Config, Admob e muito mais com Flutter. 💙

Espero que você tenha gostado! Compartilhe-o com seus amigos e colegas!

Juntos, vamos construir apps incríveis que transformam o mundo! 🌍

Se tiver alguma dúvida ou contribuição, deixe nos comentários!

Me siga para estar sempre por dentro dos próximos artigos 📲 🚀

🌐 Minhas redes sociais 🌐

GitHub | LinkedIn | Instagram | Twitter (X) | Medium

Dominando o Firebase em Aplicativos Flutter

Part 1 of 7

Nesta série de artigos, exploramos como integrar e utilizar o Firebase em aplicativos Flutter, abordando desde os conceitos básicos até funcionalidades avançadas. A série é dividida em várias partes.

Up next

Utilizando o Firebase Crashlytics no Flutter

Série: Dominando o Firebase em Aplicativos Flutter