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

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

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

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

מוודאים שהגדרתם את הפרויקט ושאתם יכולים לגשת אל 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