ثبت رویدادها

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

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

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

مطمئن شوید که پروژه خود را راه‌اندازی کرده‌اید و می‌توانید همانطور که در Get Started with Analytics for C++ توضیح داده شده به Analytics دسترسی داشته باشید.

ثبت رویدادها

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

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

رویدادهای تجزیه و تحلیل را در داشبورد مشاهده کنید

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

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

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

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