Catch up on highlights from Firebase at Google I/O 2023. Learn more

سجل الأحداث

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

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

قبل ان تبدأ

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