记录事件

事件可以让您了解您的应用中发生了什么,例如用户操作、系统事件或错误。

Google Analytics for Firebase 会自动为您记录一些事件,您无需为此添加任何代码。如果应用需要收集其他数据,您可以在其中记录最多 500 种不同的 Analytics 事件类型。应用可记录的事件总量不受限制。请注意,事件名称区分大小写。即便两个事件的名称只是大小写不同,系统也会将其视作两个不同的事件。

开始之前

如果这是您首次向应用添加 Analytics,请完成以下步骤:

在 Firebase 控制台中关联您的应用

  1. 安装 Firebase C++ SDK
  2. Firebase 控制台中,将您的应用添加到您的 Firebase 项目中。

将 Analytics 添加到您的应用

要在您的 C++ 项目中使用 Analytics 库,您需要将其添加到您的构建文件,以便关联相应的库。

Android

  1. 将 Firebase Java 组件添加到 build.gradle 文件:

    implementation 'com.google.firebase:firebase-analytics:16.0.4'

  2. 在构建 C++ 组件时关联以下库:

    libapp.a
    libanalytics.a
    

iOS

要针对 iOS 进行构建,您需要先将 Firebase 框架添加到您的 Xcode 项目:

  1. 将以下依赖项添加到您的 Podfile:
    pod 'Firebase/Core'
    pod 'Firebase/Analytics'
  2. 运行 $pod install
  3. firebase.frameworkfirebase_analytics.framework 添加到您的 Xcode 项目。

记录事件

初始化 firebase::analytics 模块后,您可以使用该模块通过 LogEvent() 方法来记录事件。

为帮助您着手,Analytics SDK 定义了许多推荐的事件,这些事件可通用于各种应用类型,包括零售和电子商务、旅行以及游戏应用。如需详细了解这些事件及其适用情形,请在 Firebase 帮助中心浏览事件和属性相关文章。

您可在以下位置找到推荐的事件类型的实现详情:

  • 推荐事件:请参阅 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]));

除了预设参数外,您还可以将以下参数添加到任意事件中:

  • 自定义参数:自定义参数不会直接显示在您的 Analytics 报告中,但它们在可应用于每份报告的受众群体定义中可用作过滤条件。如果应用已关联至一个 BigQuery 项目,则自定义参数也包含在导出至 BigQuery 的数据中。

  • 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 needs to be open at least 10s before logging a valid session.
  analytics::SetMinimumSessionDuration(1000 * 10);
  // 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;
}

在 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

此命令可在 Android Studio logcat 中显示您的事件,帮助您即时验证正在发送的事件。

在信息中心内查看 Analytics 事件

您可以在 Firebase 信息中心内查看有关您的 Analytics 事件的汇总统计信息。信息中心会每日定期更新。如需立即测试,请按照上一部分中述使用 logcat 输出进行。

要在 Firebase 控制台中访问此数据,请执行以下操作:

  1. Firebase 控制台中,打开您的项目。
  2. 从菜单中选择 Analytics 以查看 Analytics 报告信息中心。

Events(事件)会显示事件报告,这些报告是针对应用所记录的每种类型的 Analytics 事件自动生成的。要详细了解 Analytics 报告信息中心,请访问 Firebase 帮助中心。

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面