Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Registrar eventos

Os eventos apresentam insights sobre o que está acontecendo no app, como ações do usuário, eventos do sistema ou erros.

O Google Analytics registra alguns eventos automaticamente. Não é necessário adicionar códigos para recebê-los. Se o app precisar coletar outros dados, será possível registrar até 500 tipos diferentes de eventos do Analytics no aplicativo. Não há limite para o volume total de eventos registrados pelo app. Como os nomes de eventos diferenciam letras maiúsculas e minúsculas, registrar dois eventos com nomes que diferem apenas no uso de caixa baixa/alta resultará na criação de dois eventos distintos.

Antes de começar

Verifique se você configurou seu projeto e pode acessar o Analytics, conforme descrito em Primeiros passos com Analytics para Firebase em C++.

Registrar eventos

Depois de inicializar o módulo firebase::analytics, será possível usá-lo para registrar eventos com o método LogEvent().

Para ajudar você a começar, o SDK do Analytics define vários eventos sugeridos, comuns entre tipos diferentes de apps, como os de varejo, comércio eletrônico, viagem e jogos. Para saber mais sobre esses eventos e quando usá-los, leia os artigos sobre Eventos e propriedades na Central de Ajuda do Firebase.

O detalhes de implementação dos tipos de eventos sugeridos podem ser encontrados nos seguintes locais:

  • Eventos sugeridos: veja a lista de constantes de Event.
  • Parâmetros prescritos: veja a lista de constantes de Parameters.

Veja no exemplo a seguir como registrar um evento SELECT_CONTENT sugerido:

  const analytics::Parameter kSelectContentParameters[] = {
    analytics::Parameter(analytics::kParameterItemID , id),
    analytics::Parameter(analytics::kParameterItemName, "name"),
    analytics::Parameter(analytics::kUserPropertySignUpMethod, "Google"),
    analytics::Parameter("favorite_food", mFavoriteFood),
    analytics::Parameter("user_id", mUserId),
  };
  analytics::LogEvent(
    analytics::kEventSelectContent, kSelectContentParameters,
    sizeof(kSelectContentParameters) / sizeof(kSelectContentParameters[0]));

Além dos prescritos, é possível adicionar os seguintes parâmetros a qualquer evento:

  • Parâmetros personalizados: não são representados diretamente no seu relatório do Analytics, mas podem ser usados como filtros nas definições de Público que podem ser aplicadas a todos os relatórios. Os parâmetros personalizados também serão incluídos nos dados exportados para o BigQuery, caso o app esteja vinculado a um projeto dessa ferramenta.

  • Parâmetro VALUE: VALUE é um parâmetro de uso geral que é útil para coletar a métrica principal de um evento do Analytics. Os exemplos incluem receita, distância, tempo e pontos.

Caso seu app tenha necessidades específicas que um tipo de evento do Analytics não cobre, registre seus próprios eventos personalizados do Analytics, conforme mostrado neste exemplo:

// Copyright 2016 Google Inc. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#include "firebase/analytics.h"
#include "firebase/analytics/event_names.h"
#include "firebase/analytics/parameter_names.h"
#include "firebase/analytics/user_property_names.h"
#include "firebase/app.h"

// Thin OS abstraction layer.
#include "main.h"  // NOLINT

// Execute all methods of the C++ Analytics API.
extern "C" int common_main(int argc, const char* argv[]) {
  namespace analytics = ::firebase::analytics;
  ::firebase::App* app;

  LogMessage("Initialize the Analytics library");
#if defined(__ANDROID__)
  app = ::firebase::App::Create(GetJniEnv(), GetActivity());
#else
  app = ::firebase::App::Create();
#endif  // defined(__ANDROID__)

  LogMessage("Created the firebase app %x",
             static_cast<int>(reinterpret_cast<intptr_t>(app)));
  analytics::Initialize(*app);
  LogMessage("Initialized the firebase analytics API");

  LogMessage("Enabling data collection.");
  analytics::SetAnalyticsCollectionEnabled(true);
  // App session times out after 30 minutes.
  // If the app is placed in the background and returns to the foreground after
  // the timeout is expired analytics will log a new session.
  analytics::SetSessionTimeoutDuration(1000 * 60 * 30);

  LogMessage("Get App Instance ID...");
  auto future_result = analytics::GetAnalyticsInstanceId();
  while (future_result.status() == firebase::kFutureStatusPending) {
    if (ProcessEvents(1000)) break;
  }
  if (future_result.status() == firebase::kFutureStatusComplete) {
    LogMessage("Analytics Instance ID %s", future_result.result()->c_str());
  } else {
    LogMessage("ERROR: Failed to fetch Analytics Instance ID %s (%d)",
               future_result.error_message(), future_result.error());
  }

  LogMessage("Set user properties.");
  // Set the user's sign up method.
  analytics::SetUserProperty(analytics::kUserPropertySignUpMethod, "Google");
  // Set the user ID.
  analytics::SetUserId("uber_user_510");

  LogMessage("Set current screen.");
  // Set the user's current screen.
  analytics::SetCurrentScreen("Firebase Analytics C++ testapp", "testapp");

  // Log an event with no parameters.
  LogMessage("Log login event.");
  analytics::LogEvent(analytics::kEventLogin);

  // Log an event with a floating point parameter.
  LogMessage("Log progress event.");
  analytics::LogEvent("progress", "percent", 0.4f);

  // Log an event with an integer parameter.
  LogMessage("Log post score event.");
  analytics::LogEvent(analytics::kEventPostScore, analytics::kParameterScore,
                      42);

  // Log an event with a string parameter.
  LogMessage("Log group join event.");
  analytics::LogEvent(analytics::kEventJoinGroup, analytics::kParameterGroupID,
                      "spoon_welders");

  // Log an event with multiple parameters.
  LogMessage("Log level up event.");
  {
    const analytics::Parameter kLevelUpParameters[] = {
        analytics::Parameter(analytics::kParameterLevel, 5),
        analytics::Parameter(analytics::kParameterCharacter, "mrspoon"),
        analytics::Parameter("hit_accuracy", 3.14f),
    };
    analytics::LogEvent(
        analytics::kEventLevelUp, kLevelUpParameters,
        sizeof(kLevelUpParameters) / sizeof(kLevelUpParameters[0]));
  }

  LogMessage("Complete");

  // Wait until the user wants to quit the app.
  while (!ProcessEvents(1000)) {
  }

  analytics::Terminate();
  delete app;

  LogMessage("Shutdown");

  return 0;
}

Visualizar eventos no registro de depuração do Android Studio

É possível ativar o registro detalhado para monitorar se o SDK está registrando adequadamente os eventos. Isso inclui os eventos registrados manual e automaticamente.

Ative o registro detalhado com uma série de comandos adb:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

Esse comando exibe seus eventos no logcat do Android Studio, permitindo a verificação imediata do envio dos eventos.

Visualizar eventos do Analytics no painel

É possível ver estatísticas agregadas sobre os seus eventos do Analytics nos painéis do Console do Firebase. Eles são atualizados periodicamente ao longo do dia. Para fazer testes imediatos, use a saída do logcat conforme descrito na seção anterior.

Para acessar esses dados no Console do Firebase:

  1. No Console do Firebase, abra seu projeto.
  2. No menu, selecione Analytics para visualizar o painel de relatórios do Analytics.

Na guia Eventos, você encontra os relatórios de eventos criados automaticamente para cada tipo diferente de evento do Analytics, registrado pelo app. Leia mais sobre o painel de relatórios do Analytics na Central de Ajuda do Firebase.