Ir para o console

Registrar eventos

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

O Google Analytics para Firebase registra alguns eventos para você automaticamente, sem precisar de código adicional para o recebimento. Caso seu app precise coletar dados adicionais, você pode registrar até 500 tipos diferentes de eventos do Analytics nele. Não há limite do volume total de eventos que seu app registra. 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 sugerido SELECT_CONTENT:

  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 parâmetros prescritos, você pode 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 são incluídos nos dados exportados para o BigQuery caso seu app esteja vinculado a um projeto do BigQuery.

  • Parâmetro VALUE: VALUE é um parâmetro de uso geral útil para coletar uma métrica principal pertencente a 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 eventos personalizados próprios 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

Você pode 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. Selecione Analytics no menu para ver 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 seu app. Saiba mais sobre o painel de relatórios do Analytics na Central de Ajuda do Firebase.