Mencatat Peristiwa ke Dalam Log

Peristiwa memberikan laporan mengenai hal yang terjadi dalam aplikasi Anda, seperti tindakan pengguna, peristiwa sistem, atau error.

Google Analytics for Firebase secara otomatis mencatat beberapa peristiwa ke dalam log untuk Anda. Anda tidak perlu menambahkan kode apa pun untuk menerimanya. Jika aplikasi Anda perlu mengumpulkan data tambahan, Anda dapat mencatat hingga 500 jenis peristiwa Analytics yang berbeda ke dalam log di aplikasi tersebut. Tidak ada batasan volume total peristiwa yang dicatat aplikasi Anda ke dalam log. Perlu diperhatikan bahwa nama peristiwa peka huruf besar/kecil, sehingga logging dua peristiwa dengan nama yang sama tetapi susunan huruf kapitalnya berbeda akan menghasilkan dua peristiwa yang berbeda pula.

Sebelum Anda memulai

Jika ini pertama kalinya Anda menambahkan Analytics ke aplikasi, lakukan langkah-langkah berikut:

Hubungkan aplikasi Anda di Firebase console

  1. Instal Firebase SDK untuk C++.
  2. Di Firebase console, tambahkan aplikasi yang dimiliki ke project Firebase Anda.

Menambahkan Analytics ke aplikasi Anda

Untuk menggunakan library Analytics di project C++, Anda harus menambahkannya ke file build Anda agar library yang tepat dapat tersambung.

Android

  1. Tambahkan Firebase Java Component ke file build.gradle:

    implementation 'com.google.firebase:firebase-analytics:16.3.0'

  2. Sambungkan library berikut ketika Anda membuat komponen C++:

    libapp.a
    libanalytics.a
    

iOS

Sebelum Anda dapat membuat build untuk iOS, Anda harus menambahkan framework Firebase ke project Xcode Anda:

  1. Tambahkan dependensi berikut ke Podfile Anda:
    pod 'Firebase/Core'
    pod 'Firebase/Analytics'
  2. Jalankan $pod install
  3. Tambahkan firebase.framework dan firebase_analytics.framework ke project xcode Anda.

Mencatat peristiwa ke dalam log

Setelah menginisialisasi modul firebase::analytics, Anda dapat menggunakannya untuk mencatat peristiwa ke dalam log dengan metode LogEvent().

Untuk membantu Anda memulai, Analytics SDK menetapkan sejumlah peristiwa umum yang disarankan di antara berbagai jenis aplikasi, termasuk aplikasi retail dan e-commerce, perjalanan, dan game. Untuk mempelajari lebih lanjut tentang peristiwa ini dan kapan menggunakannya, pelajari artikel Peristiwa dan properti di Pusat Bantuan Firebase.

Anda dapat menemukan detail penerapan untuk jenis peristiwa yang disarankan dalam lokasi berikut:

  • Peristiwa yang disarankan: lihat daftar konstanta Event.
  • Parameter yang ditetapkan: lihat daftar konstanta Parameters.

Contoh berikut menunjukkan cara mencatat Peristiwa SELECT_CONTENT yang disarankan ke dalam log:

  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]));

Selain parameter yang telah ditetapkan, Anda dapat menambahkan parameter berikut ke peristiwa apa pun:

  • Parameter kustom: Parameter kustom tidak terwakili secara langsung dalam laporan Analytics Anda, tetapi dapat digunakan sebagai filter dalam definisi Audience yang dapat diterapkan pada setiap laporan. Parameter kustom juga tercakup dalam data yang diekspor ke BigQuery jika aplikasi Anda dihubungkan ke project BigQuery.

  • Parameter VALUE: VALUE adalah parameter bersifat umum yang berguna untuk mengumpulkan metrik kunci yang terkait dengan Peristiwa Analytics. Contohnya termasuk pendapatan, jarak, waktu, dan poin.

Jika aplikasi Anda memiliki kebutuhan spesifik yang tidak tercakup dalam jenis Peristiwa Analytics yang disarankan, Anda dapat membuat log Peristiwa Analytics kustom seperti yang ditunjukkan dalam contoh berikut:

// 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 needs to be open at least 10s before logging a valid session.
  analytics::SetMinimumSessionDuration(1000 * 10);
  // 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("Set current screen.");
  // Set the user's current screen.
  analytics::SetCurrentScreen("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;
}

Menampilkan peristiwa dalam log debug Android Studio

Anda dapat mengaktifkan logging mendetail untuk memantau pencatatan peristiwa ke dalam log oleh SDK dan memastikan bahwa peristiwa dicatat ke dalam log dengan benar. Hal ini mencakup pencatatan peristiwa ke dalam log secara otomatis maupun manual.

Anda dapat mengaktifkan logging mendetail dengan serangkaian perintah adb:

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

Perintah ini menampilkan peristiwa di logcat Android Studio yang akan membantu Anda untuk segera melakukan verifikasi bahwa suatu peristiwa memang sedang dikirimkan.

Melihat peristiwa Analytics di dasbor

Anda dapat melihat statistik gabungan mengenai Peristiwa Analytics di dasbor Firebase console. Dasbor ini diupdate secara berkala sepanjang hari. Untuk pengujian langsung, gunakan keluaran logcat seperti yang dijelaskan di bagian sebelumnya.

Untuk mengakses data ini di Firebase console:

  1. Buka project Anda di Firebase console.
  2. Pilih Analytics dari menu untuk melihat dasbor pelaporan Analytics.

Tab Peristiwa menampilkan laporan peristiwa yang otomatis dibuat untuk setiap jenis Peristiwa Analytics berbeda yang dicatat ke dalam log oleh aplikasi Anda. Baca lebih lanjut mengenai dasbor pelaporan Analytics di Pusat Bantuan Firebase.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.