Журнал событий

Выберите платформу: iOS+ Android Web Flutter Unity C++


События позволяют получить представление о том, что происходит в вашем приложении, например, о действиях пользователя, системных событиях или ошибках.

Google Analytics автоматически регистрирует некоторые события ; вам не нужно добавлять какой-либо код для их получения. Если вашему приложению необходимо собирать дополнительные данные, вы можете регистрировать до 500 различных типов событий Analytics . Общее количество регистрируемых событий не ограничено. Обратите внимание, что имена событий чувствительны к регистру, и регистрация двух событий, имена которых различаются только регистром, приведет к двум различным событиям.

Прежде чем начать

Убедитесь, что вы настроили свой проект и имеете доступ к Analytics как описано в разделе «Начало работы с Analytics для C++» .

Журнал событий

После инициализации модуля firebase::analytics вы можете использовать его для регистрации событий с помощью метода LogEvent() .

To help you get started, the Analytics SDK defines a number of recommended events that are common among different types of apps, including retail and ecommerce, travel, and gaming apps. To learn more about these events and when to use them, browse the Events and properties articles in the Firebase Help Center.

Подробную информацию о реализации рекомендуемых событий можно найти в следующих местах:

  • Рекомендуемые события: см. список констант Event .
  • Заданные параметры: см. список констант в разделе Parameters .

В следующем примере показано, как зарегистрировать предлагаемое событие 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]));

В дополнение к предписанным параметрам, к любому событию можно добавить следующие параметры:

  • Custom parameters: Custom parameters are not represented directly in your Analytics reports, but they can be used as filters in Audience definitions that can be applied to every report. Custom parameters are also included in data exported to BigQuery if your app is linked to a BigQuery project.

  • Параметр VALUE : VALUE — это универсальный параметр, полезный для сбора ключевых показателей, относящихся к Analytics событию. Примеры включают доход, расстояние, время и баллы.

Если у вашего приложения есть специфические потребности, не охватываемые предлагаемым типом Analytics событий, вы можете регистрировать собственные пользовательские Analytics события, как показано в этом примере:

// 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;
}

Просматривайте события в журнале отладки Android Studio.

Вы можете включить подробное логирование, чтобы отслеживать события, регистрируемые SDK, и убедиться в правильности их регистрации. Это касается как автоматически, так и вручную регистрируемых событий.

Включить подробное логирование можно с помощью ряда команд adb:

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

Эта команда отображает ваши события в logcat Android Studio, помогая вам немедленно убедиться в том, что события отправляются.

Просматривайте аналитические события на панели управления.

В консоли Firebase вы можете просмотреть сводную статистику по вашим событиям на панели мониторинга «Аналитика > События» .

Обратите внимание на следующие особенности этой панели мониторинга:

  • На панели управления отображаются отчеты о событиях, которые автоматически создаются для каждого типа событий, регистрируемых вашим приложением.

  • Панель мониторинга периодически обновляется в течение дня. Для немедленного тестирования используйте консоль отладки Xcode или вывод logcat, как описано в предыдущем разделе этого руководства.

Подробнее о панели управления можно прочитать здесь.