تسجيل الأحداث

توفِّر الأحداث إحصاءات حول ما يحدث في تطبيقك، مثل معلومات المستخدِم. الإجراءات أو أحداث النظام أو الأخطاء.

تسجِّل "إحصاءات Google" تلقائيًا بعض الفعاليات لك؛ ولست بحاجة إلى إضافة أي رمز لتلقّيها. إذا كان تطبيقك بحاجة إلى جمع بيانات إضافية، يمكنك تسجيل ما يصل إلى 500 نوع حدث مختلف في "إحصاءات Google" في تطبيقك. وما مِن حد أقصى لإجمالي حجم الأحداث التي يتم تسجيلها في تطبيقك. لاحظ أن أسماء الأحداث حساسة لحالة الأحرف وأن تسجيل حدثين يتم فيهما من أسماء مختلفة فقط في حالة النتائج في حدثين مختلفين.

قبل البدء

تأكَّد من إعداد مشروعك وبإمكانك الوصول إلى "إحصاءات Google" من خلال موصوفة في بدء استخدام Analytics للغة C++.

تسجيل الأحداث

بعد إعداد وحدة firebase::analytics، يمكنك استخدامها لتسجيل الأحداث باستخدام الطريقة LogEvent().

لمساعدتك في البدء، تحدد حزمة تطوير البرامج لخدمة "إحصاءات Google" عددًا من الأحداث المُقترَحة الشائعة بين الأنواع المختلفة من التطبيقات، بما في ذلك والبيع بالتجزئة والتجارة الإلكترونية والسفر والألعاب. لمزيد من المعلومات عن هذه الأحداث وحالات استخدامها، تصفح الأحداث والخصائص في مركز مساعدة 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 هي مَعلمة لأغراض عامة. وهي مفيدة لتجميع مقياس رئيسي يتعلق حدث "إحصاءات Google". وتشمل الأمثلة الأرباح والمسافة والوقت والنقاط.

إذا كان طلبك ينطوي على احتياجات محددة غير مشمولة في أحد الاقتراحات نوع حدث "إحصاءات Google"، يمكنك تسجيل أحداثك المخصّصة في "إحصاءات Google" كما هو موضح في هذا المثال:

// 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"

يمكنك تفعيل التسجيل المطوَّل لمراقبة تسجيل الأحداث من خلال حزمة تطوير البرامج (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"، ما يساعدك في والتحقق فورًا من أنه يتم إرسال الأحداث.

عرض أحداث الإحصاءات في لوحة البيانات

يمكنك الاطّلاع على إحصاءات مجمّعة عن أحداثك على "إحصاءات Google" في لوحات بيانات "وحدة تحكُّم Firebase" يتم تعديل لوحات البيانات هذه بشكل دوري. على مدار اليوم. لإجراء اختبار فوري، استخدِم ناتج Logcat كما هو موضَّح في القسم السابق.

للوصول إلى هذه البيانات في "وحدة تحكُّم Firebase":

  1. افتح مشروعك في وحدة تحكُّم Firebase.
  2. اختَر إحصاءات Google من القائمة لعرض "إحصاءات Google". لوحة معلومات إعداد التقارير.

تعرض علامة التبويب الأحداث تقارير الأحداث يتم إنشاؤه تلقائيًا لكل نوع مختلف من أحداث "إحصاءات Google" التي سجّلها تطبيقك. يمكنك الاطّلاع على المزيد من المعلومات عن لوحة البيانات.