רישום אירועים

אירועים מספקים תובנות לגבי מה שקורה באפליקציה שלכם, כמו פעולות המשתמשים, שגיאות או אירועי מערכת.

Google Analytics מתעד באופן אוטומטי חלק מהאירועים בשבילכם, ואין צורך להוסיף קוד כדי לקבל אותם. אם האפליקציה שלכם צריכה לאסוף נתונים נוספים, תוכלו לתעד באפליקציה עד 500 סוגים שונים של אירועי Analytics. אין הגבלה על הנפח הכולל של האירועים שתתעד האפליקציה. חשוב לזכור ששמות אירועים הם תלויי אותיות רישיות. אם יש שני אירועים שההבדל בין השמות שלהם הוא רק באותיות גדולות או קטנות, המערכת תתעד אותם כשני אירועים נפרדים.

לפני שמתחילים

מוודאים שהגדרתם את הפרויקט ויש לכם גישה ל-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. לוחות הבקרה האלה מתעדכנים מדי פעם במהלך היום. לבדיקה מיידית, משתמשים בפלט של logcat כפי שמתואר בקטע הקודם.

כדי לגשת לנתונים האלה במסוף Firebase:

  1. פותחים את הפרויקט במסוף Firebase.
  2. בתפריט, בוחרים באפשרות Analytics כדי להציג את לוח הבקרה של דיווח Analytics.

בכרטיסייה אירועים מוצגים דוחות האירועים שנוצרים באופן אוטומטי לכל סוג ייחודי של אירוע Analytics שמתועד ביומן על ידי האפליקציה. מידע נוסף על מרכז הבקרה