Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

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

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

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