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

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

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

ก่อนเริ่มต้น

ตรวจสอบว่าคุณได้สร้างโปรเจ็กต์และสามารถเข้าถึง 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 ในหน้าแดชบอร์ด

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

วิธีเข้าถึงข้อมูลนี้ในคอนโซล Firebase

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

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