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

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


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

Google Analytics به‌طور خودکار برخی رویدادها را برای شما ثبت می‌کند؛ برای دریافت آن‌ها نیازی به افزودن هیچ کدی ندارید. اگر برنامه‌تان نیاز به جمع‌آوری داده‌های بیشتری دارد، می‌توانید تا ۵۰۰ نوع رویداد 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»

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

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

مشاهده رویدادهای Analytics در داشبورد

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

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

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

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

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