Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

บันทึกเหตุการณ์

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

เหตุการณ์ให้ข้อมูลเชิงลึกเกี่ยวกับสิ่งที่เกิดขึ้นในแอปของคุณ เช่น การกระทำของผู้ใช้ เหตุการณ์ของระบบ หรือข้อผิดพลาด

Google Analytics จะบันทึก เหตุการณ์ บางอย่างให้คุณโดยอัตโนมัติ คุณไม่จำเป็นต้องเพิ่มรหัสใด ๆ เพื่อรับรหัส หากแอปของคุณต้องการรวบรวมข้อมูลเพิ่มเติม คุณสามารถบันทึกประเภทเหตุการณ์ Analytics ได้ถึง 500 ประเภทในแอปของคุณ ไม่มีการจำกัดจำนวนเหตุการณ์ทั้งหมดที่แอปบันทึก โปรดทราบว่าชื่อเหตุการณ์จะคำนึงถึงขนาดตัวพิมพ์ และการบันทึกเหตุการณ์สองเหตุการณ์ที่มีชื่อต่างกันเฉพาะในกรณีที่จะส่งผลให้เกิดเหตุการณ์ที่แตกต่างกันสองเหตุการณ์

ก่อนจะเริ่ม

ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่าโครงการของคุณและสามารถเข้าถึง Analytics ตามที่อธิบายไว้ใน เริ่มต้นใช้งาน Analytics สำหรับ C++

บันทึกเหตุการณ์

หลังจากที่คุณได้เริ่มต้นโมดูล 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 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 ช่วยให้คุณตรวจสอบได้ทันทีว่ามีการส่งกิจกรรม

ดูเหตุการณ์การวิเคราะห์ในแดชบอร์ด

คุณดูสถิติรวมเกี่ยวกับเหตุการณ์ Analytics ได้ในแดชบอร์ดคอนโซล Firebase แดชบอร์ดเหล่านี้จะอัปเดตเป็นระยะตลอดทั้งวัน สำหรับการทดสอบทันที ให้ใช้เอาต์พุต logcat ตามที่อธิบายไว้ในส่วนก่อนหน้า

ในการเข้าถึงข้อมูลนี้ในคอนโซล Firebase:

  1. ใน คอนโซล Firebase ให้เปิดโปรเจ็กต์ของคุณ
  2. เลือก Analytics จากเมนูเพื่อดูแดชบอร์ดการรายงาน Analytics

แท็บ เหตุการณ์ แสดง รายงานเหตุการณ์ ที่สร้างขึ้นโดยอัตโนมัติสำหรับเหตุการณ์ Analytics แต่ละประเภทที่แอปของคุณบันทึกไว้ อ่านเพิ่มเติมเกี่ยวกับ แดชบอร์ดการรายงานของ Analytics ในศูนย์ช่วยเหลือของ Firebase