| เลือกแพลตฟอร์ม: | iOS+ Android Web Flutter Unity C++ |
เหตุการณ์ช่วยให้คุณมีข้อมูลเชิงลึกเกี่ยวกับสิ่งที่เกิดขึ้นภายในแอป เช่น การกระทำของผู้ใช้ เหตุการณ์ของระบบ หรือข้อผิดพลาด
Google Analytics จะบันทึก เหตุการณ์บางอย่างให้คุณโดยอัตโนมัติ คุณจึงไม่จำเป็นต้องเพิ่มโค้ดใดๆ เพื่อรับเหตุการณ์เหล่านั้น หากแอปจำเป็นต้องเก็บรวบรวม ข้อมูลเพิ่มเติม คุณสามารถบันทึกเหตุการณ์ประเภทต่างๆ ได้มากถึง 500 รายการAnalyticsในแอป โดยไม่มีการจำกัดปริมาณรวมของเหตุการณ์ที่แอปบันทึก โปรดทราบว่าชื่อเหตุการณ์จะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ และการบันทึกเหตุการณ์ 2 เหตุการณ์ที่มีชื่อเดียวกันแต่มีตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ต่างกัน ระบบจะถือว่า 2 เหตุการณ์นั้นเป็นคนละเหตุการณ์กัน
ก่อนเริ่มต้น
ตรวจสอบว่าคุณได้ตั้งค่าโปรเจ็กต์และเข้าถึง Analytics ได้ตามที่ อธิบายไว้ใน หัวข้อเริ่มต้นใช้งาน Analytics สำหรับ C++
บันทึกเหตุการณ์
หลังจากเริ่มต้นโมดูล firebase::analytics แล้ว คุณจะใช้โมดูลนี้เพื่อบันทึก
เหตุการณ์ด้วยเมธอด LogEvent() ได้
SDK ของ Analytics กำหนดเหตุการณ์ที่แนะนำไว้หลายเหตุการณ์ซึ่งพบได้ทั่วไปในแอปประเภทต่างๆ รวมถึงแอปค้าปลีกและอีคอมเมิร์ซ แอปท่องเที่ยว และแอปเกม เพื่อช่วยให้คุณเริ่มต้นใช้งานได้ หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับเหตุการณ์เหล่านี้ และเวลาที่ควรใช้ โปรดเรียกดูบทความเกี่ยวกับเหตุการณ์และพร็อพเพอร์ตี้ ในศูนย์ช่วยเหลือของ 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 คุณสามารถดูสถิติแบบรวมเกี่ยวกับเหตุการณ์ได้ ในแดชบอร์ดAnalytics > Events
สิ่งที่ควรทราบเกี่ยวกับแดชบอร์ดนี้มีดังนี้
แดชบอร์ดจะแสดงรายงานเหตุการณ์ที่สร้างขึ้นโดยอัตโนมัติสำหรับเหตุการณ์แต่ละประเภทที่แอปบันทึก
แดชบอร์ดจะอัปเดตเป็นระยะๆ ตลอดทั้งวัน หากต้องการทดสอบทันที ให้ใช้คอนโซลดีบักของ Xcode หรือเอาต์พุต Logcat ตามที่อธิบายไว้ในส่วนก่อนหน้าของคู่มือนี้
อ่านเพิ่มเติมเกี่ยวกับแดชบอร์ด