رویدادهای گزارش

انتخاب پلاتفرم: iOS+ Android Web Flutter Unity C++‎


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

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

قبل از شروع

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

رویدادهای گزارش

پس‌از مقداردهی اولیه کردن واحد firebase::analytics، می‌توانید از آن برای ثبت رویدادها با روش LogEvent() استفاده کنید.

برای کمک به شما در شروع کار، «کیت توسعه نرم‌افزار» 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;
}

مشاهده رویدادها در گزارش اشکال‌زدایی «استودیو Android»

می‌توانید گزارش‌گیری پرحرف را فعال کنید تا گزارش‌گیری رویدادها توسط کیت توسعه نرم‌افزار را پایش کنید و به تأیید اینکه رویدادها به‌درستی گزارش‌گیری می‌شوند کمک کنید. این شامل رویدادهای ثبت‌شده به‌صورت خودکار و دستی می‌شود.

می‌توانید گزارش‌گیری مفصل را با مجموعه‌ای از فرمان‌های 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» نمایش می‌دهد و به شما کمک می‌کند فوراً تأیید کنید که رویدادها ارسال می‌شوند.

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

در کنسول Firebase، می‌توانید آمار تجمیعی رویدادهایتان را در داشبورد Analytics > رویدادها مشاهده کنید.

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

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

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

درباره داشبورد بیشتر بخوانید.