Registrar eventos

Los eventos proporcionan información valiosa sobre lo que sucede en tu app. Por ejemplo, acciones de los usuarios, eventos del sistema o errores.

Google Analytics registra automáticamente algunos eventos. No es necesario que agregues ningún código para recibirlos. Si necesitas recopilar datos adicionales para la app, puedes registrar hasta 500 tipos distintos de eventos de Analytics en ella. No existen límites para el volumen total de eventos que registra la app. Ten en cuenta que los nombres de los eventos distinguen mayúsculas de minúsculas y, si se registran dos eventos con nombres iguales que solo difieren en el uso de mayúsculas, se consideran eventos diferentes.

Antes de comenzar

Asegúrate de que tu proyecto esté configurado y pueda acceder a Analytics como se describe en Primeros pasos con Analytics para C++.

Registra eventos

Después de inicializar el módulo firebase::analytics, puedes usarlo para registrar eventos con el método LogEvent().

Para ayudarte a comenzar, el SDK de Analytics define una cantidad de eventos recomendados que son comunes entre diferentes tipos de apps, como las de venta minorista y comercio electrónico, viajes y videojuegos. Para obtener más información acerca de estos eventos y el momento en que deben usarse, consulta los artículos sobre eventos y propiedades del Centro de ayuda de Firebase.

Puedes encontrar detalles de implementación sobre los eventos recomendados en las siguientes ubicaciones:

  • Eventos sugeridos: consulta la lista de constantes de Event.
  • Parámetros prescritos: consulta la lista de constantes de Parameters.

En el siguiente ejemplo, se muestra cómo registrar un 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]));

Además de los parámetros prescritos, puedes agregar los siguientes parámetros a cualquier evento:

  • Parámetros personalizados: Los parámetros personalizados no están representados directamente en los informes de Analytics, pero se pueden usar como filtros en definiciones de Público que se pueden aplicar a todos los informes. Los parámetros personalizados también se incluyen en los datos exportados a BigQuery si la app está vinculada con un proyecto de BigQuery.

  • Parámetro VALUE: VALUE es un parámetro de uso general útil para acumular una métrica clave relacionada con un evento de Analytics. Entre los ejemplos, se incluyen los ingresos, la distancia, el tiempo y los puntos.

Si tu aplicación tiene necesidades específicas que no están cubiertas por ningún tipo de Evento de Analytics sugerido, puedes registrar tus propios Eventos de Analytics personalizados, como se muestra en este ejemplo:

// 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("Log current screen.");
  // Log the user's current screen.
  analytics::LogEvent(analytics::kEventScreenView, "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;
}

Cómo ver eventos en el registro de depuración de Android Studio

Puedes habilitar el registro detallado para supervisar el registro de eventos a través del SDK a fin de verificar que se registren correctamente. Esto incluye eventos registrados de manera automática y manual.

Puedes habilitar el registro detallado con una serie de comandos de adb:

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

Este comando muestra tus eventos en el logcat de Android Studio, lo que te ayudará a verificar de inmediato que los eventos se envíen.

Cómo ver eventos de análisis en el panel

Puedes ver las estadísticas globales de los eventos de Analytics en los paneles de Firebase console. Estos paneles se actualizan periódicamente durante el día. Para hacer pruebas inmediatas, usa la salida del logcat como se describe en la sección anterior.

Para acceder a estos datos en Firebase console:

  1. Abre tu proyecto en Firebase console.
  2. Selecciona Analytics en el menú para ver el panel de informes de Analytics.

En la pestaña Eventos, se muestran los informes de eventos que se crean automáticamente para cada tipo de evento de Analytics que registra tu app. Obtén más información sobre el panel.