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

בחירת פלטפורמה: iOS+‎ Android אינטרנט Flutter Unity C++‎


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

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

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

חשוב לוודא שהגדרתם את הפרויקט ושיש לכם גישה אל Analytics, כמו שמתואר במאמר תחילת העבודה עם Analytics ל-C++‎.

אירועים ביומן

אחרי שמפעילים את המודול firebase::analytics, אפשר להשתמש בו כדי לתעד אירועים באמצעות ה-method‏ 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, וכך אתם יכולים לוודא מיד שהאירועים נשלחים.

צפייה באירועי ניתוח נתונים במרכז הבקרה

במסוף Firebase, אתם יכולים לראות נתונים סטטיסטיים נצברים על האירועים שלכם במרכז הבקרה של Analytics > Events.

כמה נקודות חשובות לגבי מרכז הבקרה הזה:

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

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

מידע נוסף על מרכז הבקרה