ثبت رویدادها

رویدادها (Events) بینشی در مورد آنچه در برنامه شما اتفاق می‌افتد، مانند اقدامات کاربر، رویدادهای سیستم یا خطاها، ارائه می‌دهند.

Google Analytics به طور خودکار برخی رویدادها را برای شما ثبت می‌کند؛ برای دریافت آنها نیازی به اضافه کردن هیچ کدی ندارید. اگر برنامه شما نیاز به جمع‌آوری داده‌های اضافی دارد، می‌توانید تا ۵۰۰ نوع رویداد مختلف Analytics را در برنامه خود ثبت کنید. هیچ محدودیتی در حجم کل رویدادهایی که برنامه شما ثبت می‌کند وجود ندارد. توجه داشته باشید که نام رویدادها به حروف کوچک و بزرگ حساس است و ثبت دو رویداد که نام آنها فقط در حروف کوچک و بزرگ متفاوت است، منجر به دو رویداد مجزا می‌شود.

قبل از اینکه شروع کنی

مطمئن شوید که پروژه خود را راه‌اندازی کرده‌اید و می‌توانید طبق توضیحات «شروع کار با Analytics برای ++C» به Analytics دسترسی داشته باشید.

ثبت رویدادها

پس از اینکه ماژول 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;
}

مشاهده رویدادها در گزارش اشکال‌زدایی اندروید استودیو

شما می‌توانید ثبت وقایع به صورت کامل (verbose logging) را فعال کنید تا ثبت وقایع توسط SDK را رصد کنید و از صحت ثبت وقایع اطمینان حاصل کنید. این شامل وقایع ثبت شده به صورت خودکار و دستی می‌شود.

شما می‌توانید با استفاده از یک سری دستورات adb، قابلیت ثبت وقایع شفاهی (verbose logging) را فعال کنید:

adb shell setprop log.tag.FA VERBOSE
adb shell setprop log.tag.FA-SVC VERBOSE
adb logcat -v time -s FA FA-SVC

این دستور رویدادهای شما را در فایل لاگ اندروید استودیو نمایش می‌دهد و به شما کمک می‌کند تا فوراً تأیید کنید که رویدادها ارسال می‌شوند.

مشاهده رویدادهای تحلیلی در داشبورد

شما می‌توانید آمار کلی مربوط به رویدادهای Analytics خود را در داشبوردهای کنسول Firebase مشاهده کنید. این داشبوردها به صورت دوره‌ای در طول روز به‌روزرسانی می‌شوند. برای آزمایش فوری، از خروجی logcat همانطور که در بخش قبل توضیح داده شد، استفاده کنید.

برای دسترسی به این داده‌ها در کنسول Firebase :

  1. در کنسول Firebase ، پروژه خود را باز کنید.
  2. برای مشاهده داشبورد گزارش‌های Analytics ، از منو، Analytics انتخاب کنید.

تب رویدادها ، گزارش‌های رویدادی را نشان می‌دهد که به‌طور خودکار برای هر نوع رویداد Analytics ثبت‌شده توسط برنامه شما ایجاد می‌شوند. درباره داشبورد بیشتر بخوانید.