Ghi nhật ký sự kiện

Sự kiện cung cấp thông tin chi tiết về những gì đang xảy ra trong ứng dụng của bạn, chẳng hạn như thông tin về người dùng hành động, sự kiện hệ thống hoặc lỗi.

Google Analytics tự động ghi lại một số sự kiện cho bạn; bạn không cần thêm mã nào để nhận chúng. Nếu ứng dụng của bạn cần thu thập dữ liệu bổ sung, bạn có thể ghi lại tối đa 500 loại sự kiện Analytics khác nhau trong ứng dụng của bạn. Không có giới hạn về tổng số lượng sự kiện mà ứng dụng của bạn ghi lại. Xin lưu ý rằng tên sự kiện có phân biệt chữ hoa chữ thường và việc ghi lại hai sự kiện có tên chỉ khác nhau trong trường hợp dẫn đến hai sự kiện riêng biệt.

Trước khi bắt đầu

Hãy đảm bảo rằng bạn đã thiết lập dự án và có thể truy cập vào Analytics dưới dạng được mô tả trong Bắt đầu sử dụng Analytics cho C++.

Ghi nhật ký sự kiện

Sau khi khởi động mô-đun firebase::analytics, bạn có thể sử dụng mô-đun đó để ghi nhật ký các sự kiện bằng phương thức LogEvent().

Để giúp bạn bắt đầu, SDK Analytics sẽ xác định một số các sự kiện được đề xuất thường thấy của nhiều loại ứng dụng, bao gồm bán lẻ và thương mại điện tử, du lịch và trò chơi. Để tìm hiểu thêm về những sự kiện này và thời điểm sử dụng, hãy duyệt qua Sự kiện và tài sản trong Trung tâm trợ giúp Firebase.

Bạn có thể tìm thấy thông tin triển khai cho các sự kiện được đề xuất trong phần sau vị trí:

  • Sự kiện đề xuất: xem danh sách hằng số Event.
  • Các tham số được quy định: xem danh sách các hằng số Parameters.

Ví dụ sau minh hoạ cách ghi nhật ký SELECT_CONTENT Sự kiện:

  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]));

Ngoài các thông số quy định, bạn có thể thêm các thông số sau cho bất kỳ sự kiện nào:

  • Thông số tùy chỉnh: Thông số tùy chỉnh không được trình bày trực tiếp trong báo cáo Analytics. Tuy nhiên, bạn có thể sử dụng các báo cáo này làm bộ lọc trong Định nghĩa về Đối tượng có thể áp dụng cho mọi báo cáo. Tùy chỉnh các thông số cũng được bao gồm trong dữ liệu được xuất sang BigQuery nếu ứng dụng của bạn được liên kết với một dự án BigQuery.

  • VALUE Tham số: VALUE là tham số dùng cho mục đích chung hữu ích khi tích luỹ chỉ số quan trọng liên quan đến Sự kiện Analytics. Ví dụ: doanh thu, khoảng cách, thời gian và điểm.

Nếu ứng dụng của bạn có các nhu cầu cụ thể không thuộc phạm vi của Loại sự kiện Analytics, bạn có thể ghi lại các sự kiện Analytics tùy chỉnh của riêng mình như trong ví dụ sau:

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

Xem các sự kiện trong nhật ký gỡ lỗi của Android Studio

Bạn có thể bật tính năng ghi nhật ký chi tiết để giám sát hoạt động ghi nhật ký các sự kiện của SDK nhằm giúp xác minh rằng các sự kiện đang được ghi lại đúng cách. Điều này tự động bao gồm cả và sự kiện được ghi lại theo cách thủ công.

Bạn có thể bật tính năng ghi nhật ký chi tiết bằng một loạt lệnh adb:

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

Lệnh này hiển thị các sự kiện của bạn trong logcat của Android Studio, giúp bạn ngay lập tức xác minh rằng sự kiện đang được gửi.

Xem các sự kiện phân tích trong trang tổng quan

Bạn có thể xem số liệu thống kê tổng hợp về các sự kiện Analytics trong Trang tổng quan của bảng điều khiển Firebase. Các trang tổng quan này cập nhật định kỳ suốt cả ngày. Để kiểm thử ngay lập tức, hãy sử dụng đầu ra logcat như mô tả trong phần trước.

Cách truy cập vào dữ liệu này trong bảng điều khiển của Firebase:

  1. Trong bảng điều khiển của Firebase, hãy mở dự án của bạn.
  2. Chọn Số liệu phân tích trong trình đơn để xem Số liệu phân tích trang tổng quan báo cáo.

Thẻ Sự kiện cho thấy những báo cáo sự kiện được tạo tự động cho mỗi loại sự kiện Analytics riêng biệt được ghi lại bởi ứng dụng của bạn. Đọc thêm về trang tổng quan.