سجل الأحداث

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

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

قبل ان تبدأ

تأكد من أنك قمت بإعداد مشروعك ويمكنك الوصول إلى Analytics كما هو موضح في بدء استخدام Analytics for C++ .

سجل الأحداث

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

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

يعرض هذا الأمر أحداثك في Android Studio logcat، مما يساعدك على التحقق فورًا من إرسال الأحداث.

عرض أحداث التحليلات في لوحة المعلومات

يمكنك عرض إحصائيات مجمعة حول أحداث Analytics في لوحات تحكم وحدة تحكم Firebase. يتم تحديث لوحات المعلومات هذه بشكل دوري طوال اليوم. لإجراء اختبار فوري، استخدم مخرجات logcat كما هو موضح في القسم السابق.

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

  1. في وحدة تحكم Firebase ، افتح مشروعك.
  2. حدد Analytics من القائمة لعرض لوحة تحكم تقارير Analytics.

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