1. Pengantar
Iklan adalah bagian penting dari keseluruhan pengalaman pengguna aplikasi Anda. Penerapan iklan yang baik dapat membantu meningkatkan pengalaman aplikasi secara keseluruhan, bahkan meningkatkan retensi dan engagement pengguna. Misalnya, Iklan reward memungkinkan Anda memberi pengguna mata uang atau item dalam aplikasi karena sudah menonton iklan video, sehingga pengguna dapat mencapai level baru yang sebelumnya mungkin tidak dapat mereka capai dan membuat mereka berhenti menggunakan aplikasi.
Namun, menciptakan pengalaman iklan yang luar biasa tidaklah mudah. Anda mungkin memiliki pertanyaan seperti: Seberapa sering Anda harus menampilkan iklan ini? Di mana dan kapan Anda harus menayangkannya? Apa penghargaan yang harus diberikan? Sayangnya, jawabannya berbeda-beda untuk setiap aplikasi dan penempatan. Tidak ada jawaban yang cocok untuk semua.
Dengan Google Analytics for Firebase, AdMob, dan beberapa alat canggih namun mudah digunakan lainnya yang ditawarkan Firebase, penyesuaian aplikasi Anda secara berbasis data menjadi jauh lebih mudah dan efisien. Hari ini, kami akan menunjukkan cara memulai.
Yang akan Anda bangun
Codelab ini adalah yang pertama dari tiga codelab yang akan memandu Anda mem-build aplikasi bernama Awesome Drawing Quiz, sebuah game yang memungkinkan pemain menebak nama dari gambar tersebut. Contoh ini akan menunjukkan cara menggabungkan Iklan Bersama Hadiah dan layanan Firebase dalam game Anda.
Dalam codelab ini, Anda akan mengintegrasikan Google Analytics for Firebase untuk merekam beberapa peristiwa aplikasi penting. Selain itu, Anda akan mempelajari cara membaca analisis aplikasi yang ditampilkan di Firebase console.
|
|
Jika Anda mengalami masalah (bug kode, kesalahan gramatikal, susunan kata yang tidak jelas, dll.) saat mengerjakan codelab ini, laporkan masalah tersebut melalui link Laporkan kesalahan di pojok kiri bawah codelab.
Yang akan Anda pelajari
- Cara menyiapkan Google Analytics for Firebase di aplikasi Anda
- Cara merekam peristiwa aplikasi
- Cara membaca analisis aplikasi yang ditampilkan di Firebase console
Yang Anda butuhkan
- Android Studio versi 4.1+
- Akun Google
- Perangkat pengujian dengan Android 5.0+ dengan kabel USB untuk menghubungkan perangkat Anda, atau Emulator Android yang menjalankan AVD (Android Virtual Device) dengan image sistem yang mendukung Play Store/Google API
Bagaimana Anda menilai tingkat pengalaman Anda menggunakan AdMob?
Menurut Anda, bagaimana tingkat pengalaman Anda dengan Firebase?
2. Menyiapkan lingkungan pengembangan
Download kodenya
Klik tombol berikut untuk mendownload semua kode untuk codelab ini:
Ekstrak file ZIP yang didownload. Tindakan ini akan mengekstrak folder root bernama admob-firebase-codelabs-android.
...atau clone repositori GitHub dari command line.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
Repositori ini berisi empat folder sebagai berikut:
101-base — Memulai kode yang akan Anda buat di codelab ini.
101-complete_and_102-base — Kode lengkap untuk codelab ini & kode awal untuk codelab 102.
102-complete — Kode lengkap untuk codelab 102.
Mengimpor aplikasi awal
Luncurkan Android Studio, lalu pilih "Import project" di layar selamat datang. Kemudian, pilih direktori 101-base dari kode yang telah Anda download.
Sekarang Anda akan membuka project di Android Studio.
3. Menyiapkan Unit Iklan Video Reward (Opsional)
Aplikasi awal sudah menyertakan Unit Iklan Video Reward khusus untuk memudahkan Anda. Anda sepenuhnya bebas melewati langkah ini jika tidak ingin membuat akun baru di akun AdMob Anda.
Untuk membuat aplikasi AdMob baru di akun Anda, ikuti petunjuk berikut:
- Buka Konsol AdMob.
- Dari menu Aplikasi, klik "Tambahkan Aplikasi".
- Saat ditanya "Sudahkah Anda memublikasikan aplikasi di Google Play atau App Store", jawab "TIDAK."
- Beri nama aplikasi "Awesome Drawing Quiz," pilih "Android" sebagai Platform, lalu klik "Add".
Setelah membuat aplikasi AdMob di akun Anda, ikuti langkah-langkah yang dijelaskan di bawah untuk membuat Unit Iklan Video Reward baru.
- Klik menu Aplikasi di frontend AdMob, lalu pilih "Awesome Drawing Quiz" dari daftar aplikasi.
- Klik TAMBAHKAN UNIT IKLAN untuk membuat unit iklan Video Reward baru.
- Pilih Reward untuk Format iklan.

- Berikan nama unit iklan sesuai keinginan Anda. Kemudian, tetapkan jumlah reward menjadi 1, dan item reward menjadi "petunjuk" (ini adalah reward yang saat ini diberikan aplikasi kepada pengguna). Klik BUAT UNIT IKLAN untuk membuat unit iklan Video Reward baru.

- Jika berhasil dibuat, Anda akan melihat petunjuk yang mirip dengan berikut ini:

- Kembali ke project Android, lalu perbarui konstanta ID aplikasi AdMob dan ID unit iklan ke konstanta yang telah Anda buat di langkah sebelumnya.
strings.xml
<!-- Update the value with your AdMob app id -->
<string name="admob_app_id">YOUR_ADMOB_APP_ID</string>
GameActivity.kt
// Update the value with your Rewarded Video ad unit id
private const val AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
4. Menyiapkan Project Firebase
Membuat project baru dari Firebase Console
- Buka Firebase console.
- Pilih Tambahkan Project, lalu beri nama project Anda "Awesome Drawing Quiz". Pastikan tombol pilihan Enable Google Analytics for this project diaktifkan.
- Pilih akun Google Analytics yang akan Anda gunakan. Bagi sebagian besar orang, memilih opsi Akun Default untuk Firebase sudah cukup, tetapi jika Anda memiliki akun Google Analytics lain yang ingin digunakan, pilih akun tersebut di sini.
- Klik Buat project.
Menambahkan aplikasi Android
- Dari layar ringkasan project baru, klik Tambahkan Firebase ke aplikasi Android Anda.
- Masukkan nama paket codelab: com.codelab.awesomedrawingquiz
- Tetapkan nama panggilan untuk aplikasi Anda: Awesome Drawing Quiz
- Kosongkan kolom SHA-1 karena SHA-1 tidak diperlukan untuk project ini.
- Pilih Daftarkan aplikasi untuk mendaftarkan aplikasi Anda.
Tambahkan file google-services.json ke aplikasi Anda
Selanjutnya, Anda akan melihat layar yang memungkinkan Anda mendownload file konfigurasi yang berisi semua metadata Firebase yang diperlukan untuk aplikasi Anda. Klik Download google-service.json dan salin file ke direktori
app di project Anda.

Mendeklarasikan versi dependensi
Mari kita mulai dengan menambahkan versi setiap dependensi yang diperlukan untuk mengintegrasikan Firebase dalam project. Buka file dependencies.gradle yang berada di root project, lalu tambahkan plugin google-services, Firebase Analytics SDK, dan versi Firebase Core SDK.
dependencies.gradle
ext {
...
// TODO: Declare google-services plugin version (101)
googleServicesPluginVersion = '4.3.4'
...
// TODO: Declare Firebase BOM version (101)
firebaseBomVersion = '26.2.0'
...
}
Menerapkan plugin google-services ke aplikasi Anda
Plugin google-services menggunakan file google-services.json untuk mengonfigurasi aplikasi Anda agar menggunakan Firebase.
Tambahkan google-services sebagai classpath dalam file build.gradle yang terletak di direktori root project.
build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
...
dependencies {
classpath "com.android.tools.build:gradle:$androidPluginVersion"
// TODO: Add google-services plugin (101)
classpath "com.google.gms:google-services:$googleServicesPluginVersion"
...
}
}
...
Kemudian, terapkan plugin google-services dengan menambahkan baris di file app/build.gradle sebagai berikut:
app/build.gradle
apply plugin: 'com.android.application'
// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'
android {
...
}
dependencies {
...
}
Tambahkan Firebase SDK ke project
Masih di file app/build.gradle, tambahkan Analytics SDK ke dependensi aplikasi.
app/build.gradle
apply plugin: 'com.android.application'
android {
...
}
dependencies {
...
// TODO: Import the Firebase BoM (101)
implementation platform("com.google.firebase:firebase-bom:$firebaseBomVersion")
// COMPLETE: Add Firebase Analytics dependency (101)
implementation 'com.google.firebase:firebase-analytics-ktx'
...
}
...
Sinkronkan project Anda dengan file gradle
Untuk memastikan semua dependensi tersedia untuk aplikasi Anda, sinkronkan project Anda dengan file Gradle. Pilih menu File > Sync Project with Gradle Files untuk menyinkronkan project Anda dengan file Gradle.
5. Menautkan AdMob ke Project Firebase
Selesaikan langkah-langkah berikut untuk menautkan aplikasi Anda ke Firebase.
- Login ke akun AdMob Anda di https://apps.admob.com.
- Klik Aplikasi di sidebar.
- Pilih "Awesome Drawing Quiz". Jika tidak melihatnya dalam daftar aplikasi terbaru, Anda dapat mengklik Lihat semua aplikasi untuk menelusuri daftar semua aplikasi yang telah ditambahkan ke AdMob.
- Klik Setelan aplikasi di sidebar.
- Klik Tautkan ke Firebase.
- Pilih opsi "Tautkan ke project Firebase yang ada dan buat aplikasi Firebase baru". Kemudian, pilih project "Awesome Drawing Quiz" dari menu dropdown.
- Setelah mengklik tombol "CONTINUE", Anda akan melihat pesan "Successfully linked". Klik tombol "SELESAI" untuk menyelesaikan.
Setelah Anda menautkan aplikasi AdMob ke Project Firebase, beberapa fitur tambahan di konsol AdMob dan Firebase akan tersedia seperti berikut:
Kartu pendapatan (AdMob)
Dari kartu Pendapatan, Anda dapat melihat secara menyeluruh semua kemungkinan arus pendapatan di satu tempat. Sumber pendapatan yang didukung adalah sebagai berikut:
- AdMob (Estimasi)
- Jaringan Iklan yang Dimediasi (Diamati)
- Pembelian dalam aplikasi
- Pembelian E-commerce

Kartu metrik pengguna (AdMob)
Dari kartu metrik pengguna, Anda dapat melihat pengaruh perubahan pada pengalaman iklan terhadap perilaku pengguna.

Laporan Iklan Reward (AdMob)
Laporan Iklan Reward menawarkan berbagai metrik yang akan membantu penayang memahami cara pengguna berinteraksi dengan iklan reward mereka.

Kartu total pendapatan (Firebase)
Setelah Anda menautkan aplikasi AdMob ke Firebase, kartu Total pendapatan di dasbor Firebase akan menampilkan pendapatan dari AdMob beserta pembelian dalam aplikasi dan pembelian e-commerce.

Pelaporan peristiwa iklan (Firebase)
Peristiwa khusus iklan (peristiwa klik, tayangan, dan reward) dikumpulkan secara otomatis dan tersedia untuk digunakan di Google Analytics for Firebase.

6. Menjalankan project
Setelah mengompilasi dan menjalankan project, Anda akan melihat layar berikut saat aplikasi dimulai.

Setelah mengklik MULAI GAME, Anda akan melihat gambar di layar. Misi Anda adalah menebak nama gambar dengan menggunakan petunjuk yang ditampilkan di bagian atas, yang dapat Anda gunakan untuk menyimpulkan huruf pertama dan panjang nama gambar.

Jika tidak tahu nama gambarnya, Anda dapat melewati level dengan mengklik tombol 'LEWATI'.
Anda mungkin menginginkan petunjuk tambahan yang membantu Anda menebak jawabannya. Anda bisa mendapatkan petunjuk tambahan dengan mengklik tombol 'PETUNJUK' dan menonton iklan Video Reward. Setelah Anda selesai menonton iklan, satu huruf tambahan akan diungkapkan sebagai reward.

7. Menambahkan peristiwa aplikasi
Untuk memahami perjalanan pengguna secara mendalam dalam Awesome Drawing Quiz, Anda akan menentukan beberapa peristiwa kustom yang melacak perilaku pengguna dalam game sebagai berikut:
Nama peristiwa | Dipicu... | Parameter |
game_start | saat pengguna memulai game baru | tidak ada |
level_start | saat pengguna memulai level baru (kuis gambar baru) dalam satu tahap. (ada 6 level dalam satu tahap) | level_name |
level_wrong_answer | saat pengguna mengirimkan jawaban yang salah | level_name |
ad_reward_prompt | saat pengguna mengetuk tombol petunjuk, dan diminta untuk menonton Iklan Video Reward | ad_unit_id |
ad_reward_impression | saat pengguna mulai menonton Iklan Video Reward | ad_unit_id |
level_success | saat pengguna mengirimkan jawaban yang benar (menyelesaikan level) | level_name, number_of_attempts, elapsed_time_sec, hint_used |
level_fail | saat pengguna melewati level | level_name, number_of_attempts, elapsed_time_sec, hint_used |
game_complete | saat game selesai | number_of_correct_answers |
Deskripsi setiap parameter yang terkait dengan setiap peristiwa adalah sebagai berikut:
Nama peristiwa | Nama parameter | Deskripsi |
level_start | level_name | Nama gambar yang ditampilkan di level (misalnya, "pisang") |
level_wrong_answer | level_name | saat pengguna mengirimkan jawaban yang salah |
ad_reward_prompt | ad_unit_id | ID unit iklan yang digunakan untuk menampilkan Iklan Video Reward |
ad_reward_impression | ad_unit_id | ID unit iklan yang digunakan untuk menampilkan Iklan Video Reward |
level_success | level_name | Nama gambar yang ditampilkan di level (misalnya, "pisang") |
level_success | number_of_attempts | Jumlah upaya yang dilakukan untuk menyelesaikan level |
level_success | elapsed_time_sec | Waktu yang berlalu untuk menyelesaikan level, dalam detik |
level_success | hint_used | Apakah pengguna menggunakan petunjuk (menonton Iklan Video Reward) atau tidak untuk menyelesaikan level (1: menggunakan petunjuk / 0: menyelesaikan level tanpa petunjuk) |
level_fail | level_name | Nama gambar yang ditampilkan di level (misalnya, "pisang") |
level_fail | number_of_attempts | Jumlah upaya yang dilakukan untuk menyelesaikan level |
level_fail | elapsed_time_sec | Waktu yang berlalu untuk menyelesaikan level, dalam detik |
level_fail | hint_used | Apakah pengguna menggunakan petunjuk (menonton Iklan Video Reward) atau tidak untuk menyelesaikan level (1: menggunakan petunjuk / 0: menyelesaikan level tanpa petunjuk) |
game_complete | number_of_correct_answers | Jumlah level yang diselesaikan dalam game |
Membuat class helper untuk mencatat peristiwa kustom
Untuk mencatat peristiwa analisis dengan mudah, Anda akan membuat class helper untuk mengelola peristiwa kustom.
Pertama, buat file Kotlin baru (bukan class Kotlin) dan beri nama QuizAnalytics.kt di bawah paket com.codelab.awesomedrawingquiz. Buat kolom yang menentukan nama peristiwa kustom dan parameternya.
QuizAnalytics.kt
private const val EVENT_AD_REWARD_PROMPT = "ad_reward_prompt"
private const val EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression"
private const val EVENT_LEVEL_FAIL = "level_fail"
private const val EVENT_LEVEL_SUCCESS = "level_success"
private const val EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer"
private const val EVENT_GAME_START = "game_start"
private const val EVENT_GAME_COMPLETE = "game_complete"
private const val PARAM_AD_UNIT_ID = "ad_unit_id"
private const val PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec"
private const val PARAM_HINT_USED = "hint_used"
private const val PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts"
private const val PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers"
Selanjutnya, tambahkan fungsi ekstensi yang membantu Anda mencatat peristiwa kustom dalam game. Perhatikan bahwa sebagian besar peristiwa kustom menyertakan parameter sehingga Anda memiliki lebih banyak konteks setiap peristiwa. Perhatikan juga bahwa beberapa nama dan parameter peristiwa (FirebaseAnalytics.Event.LEVEL_NAME dan FirebaseAnalytics.Event.LEVEL_START) telah ditentukan oleh Analytics, jadi kita akan menggunakannya.
QuizAnalytics.kt
...
fun FirebaseAnalytics.logGameStart() = logEvent(EVENT_GAME_START, null)
fun FirebaseAnalytics.logLevelStart(levelName: String) {
logEvent(FirebaseAnalytics.Event.LEVEL_START) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
}
}
fun FirebaseAnalytics.logLevelWrongAnswer(levelName: String) {
logEvent(EVENT_LEVEL_WRONG_ANSWER) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
}
}
fun FirebaseAnalytics.logAdRewardPrompt(adUnitId: String) {
logEvent(EVENT_AD_REWARD_PROMPT) {
param(PARAM_AD_UNIT_ID, adUnitId)
}
}
fun FirebaseAnalytics.logAdRewardImpression(adUnitId: String) {
logEvent(EVENT_AD_REWARD_IMPRESSION) {
param(PARAM_AD_UNIT_ID, adUnitId)
}
}
fun FirebaseAnalytics.logLevelSuccess(
levelName: String,
numberOfAttempts: Int,
elapsedTimeSec: Int,
hintUsed: Boolean
) {
logEvent(EVENT_LEVEL_SUCCESS) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
}
}
fun FirebaseAnalytics.logLevelFail(
levelName: String,
numberOfAttempts: Int,
elapsedTimeSec: Int,
hintUsed: Boolean
) {
logEvent(EVENT_LEVEL_FAIL) {
param(FirebaseAnalytics.Param.LEVEL_NAME, levelName)
param(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts.toLong())
param(PARAM_ELAPSED_TIME_SEC, elapsedTimeSec.toLong())
param(PARAM_HINT_USED, if (hintUsed) 1 else 0)
}
}
fun FirebaseAnalytics.logGameComplete(
numberOfCorrectAnswers: Int
) {
logEvent(EVENT_GAME_COMPLETE) {
param(PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers.toLong())
}
}
Mencatat peristiwa analisis log dalam game
Di class GameViewModel, tambahkan properti baru untuk instance FirebaseAnalytics.
GameViewModel.kt
class GameViewModel(
...
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
private val analytics: FirebaseAnalytics,
) : ViewModel() {
...
}
Selanjutnya, di class AwesomeDrawingQuizViewModelFactory, tambahkan properti baru seperti yang Anda lakukan sebelumnya di GameViewModel.
AwesomeDrawingQuizViewModelFactory.kt
class AwesomeDrawingQuizViewModelFactory(
...
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
...
}
Selanjutnya, di class AwesomeDrawingQuiz, tambahkan fungsi provideFirebaseAnalytics() dan perbarui fungsi provideViewModelFactory() untuk meneruskan instance FirebaseAnalytics ke AwesomeDrawingViewModelFactory.
AwesomeDrawingQuiz.kt
class AwesomeDrawingQuiz : Application() {
...
fun provideViewModelFactory() = AwesomeDrawingQuizViewModelFactory(
this,
provideGameSettings(),
// TODO: Pass FirebaseAnalytics instance as a parameter (101)
provideFirebaseAnalytics(),
)
// TODO: Provide FirebaseAnalytics instance (101)
private fun provideFirebaseAnalytics() = Firebase.analytics
...
}
Sekarang Anda siap menerapkan peristiwa kustom. Pertama, pada fungsi startGame(), panggil logGameStart() untuk menunjukkan bahwa game telah dimulai.
Karena logGameStart() adalah fungsi ekstensi class FirebaseAnalytics, Anda dapat memanggilnya dari instance class FirebaseAnalytics.
GameViewModel.kt
fun startGame() {
...
// TODO: Log game_start event (101)
analytics.logGameStart()
...
}
Selanjutnya, di fungsi checkAnswer(), tambahkan peristiwa level_success dan level_wrong_answer.
GameViewModel.kt
fun checkAnswer(userAnswer: String) {
...
if (correct) {
...
// TODO: Log level_success event (101)
analytics.logLevelSuccess(
levelName = drawing.word,
numberOfAttempts = numAttempts,
elapsedTimeSec = elapsedTimeInSeconds,
hintUsed = isHintUsed,
)
...
} else {
// TODO: Log level_wrong_answer event (101)
analytics.logLevelWrongAnswer(levelName = drawing.word)
...
}
}
Selanjutnya, di fungsi skipLevel(), tambahkan peristiwa level_fail untuk menandai level sebagai gagal.
GameViewModel.kt
fun skipLevel() {
...
// TODO: Log level_fail event (101)
analytics.logLevelFail(
levelName = drawing.word,
numberOfAttempts = numAttempts,
elapsedTimeSec = elapsedTimeInSeconds,
hintUsed = isHintUsed,
)
...
}
Selanjutnya, terapkan fungsi logAdRewardPrompt() dan logAdRewardImpression() untuk melacak perilaku pengguna terkait Iklan Video Reward.
GameViewModel.kt
fun logAdRewardPrompt(adUnitId: String) {
// TODO: Log ad_reward_prompt event (101)
analytics.logAdRewardPrompt(adUnitId)
}
fun logAdRewardImpression(adUnitId: String) {
// TODO: Log ad_reward_impression event (101)
analytics.logAdRewardImpression(adUnitId)
}
Terakhir, ubah fungsi requestNewDrawing() dan finishGame() untuk menambahkan peristiwa kustom level_start dan game_complete.
GameViewModel.kt
private fun requestNewDrawing() {
...
drawingRequestDisposable = drawingDao.getRandomDrawings(seenWords)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { d ->
...
// TODO: Log level_start event (101)
analytics.logLevelStart(d.word)
...
}
}
private fun finishGame() {
// TODO: Log game_complete event (101)
analytics.logGameComplete(numCorrectAnswers)
...
}
8. Men-debug peristiwa Analytics
Anda dapat menggunakan DebugView di Firebase console untuk memverifikasi bahwa peristiwa dicatat dengan benar. DebugView dapat digunakan untuk melihat data peristiwa mentah yang dicatat ke dalam log oleh aplikasi Anda di perangkat pengembangan hampir secara real-time.
Fitur ini sangat berguna untuk tujuan validasi selama fase instrumentasi pengembangan dan dapat membantu Anda menemukan error dalam penerapan analisis.
Mengaktifkan mode debug
Biasanya, peristiwa yang dicatat ke dalam log di aplikasi Anda akan dikelompokkan bersama selama kurang lebih satu jam dan diupload secara bersamaan. Untuk memvalidasi penerapan analisis secara langsung, Anda perlu mengaktifkan mode Debug di perangkat pengembangan guna mengupload peristiwa dengan penundaan minimum.
Untuk mengaktifkan mode Debug, selesaikan langkah-langkah berikut:
- Buka jendela alat Terminal di Android Studio (View > Tool Windows > Terminal).

- Jalankan perintah berikut (pastikan perangkat Android pengujian terhubung ke komputer Anda atau Android Emulator sedang berjalan):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz
Perilaku ini terus berlanjut hingga Anda menonaktifkan mode Debug secara eksplisit dengan menjalankan perintah berikut:
adb shell setprop debug.firebase.analytics.app .none.
Men-debug peristiwa Analytics dengan DebugView
Setelah mengaktifkan mode Debug di perangkat pengujian, buka project Anda di Firebase console dan pilih Analytics > DebugView dari menu. Kemudian, di perangkat pengujian, mainkan game Anda untuk melihat peristiwa yang dicatat dan ditampilkan di laporan DebugView.

Anda dapat mengakses informasi mendetail tentang setiap peristiwa dengan mengklik nama peristiwa. Sebagai contoh, screenshot berikut menampilkan detail parameter yang terkait dengan peristiwa level_start.

Lihat artikel pusat bantuan DebugView untuk mengetahui detail selengkapnya.
9. Mengaktifkan dimensi dan metrik kustom
Secara default, Google Analytics for Firebase mengumpulkan jumlah total peristiwa. Untuk setiap parameter peristiwa yang Anda minati, Anda harus mengaktifkan pelaporan untuk parameter tersebut secara eksplisit. Google Analytics for Firebase kemudian dapat menampilkan kartu tambahan untuk menunjukkan statistik parameter kustom.
Untuk mendaftarkan dimensi dan metrik kustom:
- Buka Firebase console dan pilih project Awesome Drawing Quiz yang Anda buat sebelumnya.
- Klik Analytics > Events dari menu navigasi.
- Klik Kelola Definisi Kustom.
- Di tab Dimensi kustom, klik Buat dimensi kustom.
- Di kolom Nama parameter peristiwa, masukkan level_name, lalu klik Simpan untuk menyelesaikan pendaftaran parameter.

- Selanjutnya, pilih tab Metrik kustom, lalu klik Buat metrik kustom.
- Masukkan nama parameter, satuan pengukuran untuk parameter berikut.
Nama parameter | Jenis parameter | Satuan Ukur |
number_of_attempts | Angka | Standar |
hint_used | Angka | Standar |
elapsed_time_sec | Angka | Detik |
number_of_correct_answers | Angka | Standar |
10. Mendapatkan insight dari laporan Peristiwa
Setelah menambahkan beberapa peristiwa dalam game, Anda akan dapat menjawab pertanyaan terkait perilaku pengguna dalam game. Berikut adalah beberapa insight yang bisa Anda dapatkan dari laporan peristiwa Firebase.
Level mana yang memiliki jumlah jawaban salah tertinggi?
Untuk menjawab pertanyaan ini, Anda harus mengetahui jumlah peristiwa level_wrong_answer yang dipicu per setiap level.
Klik level_wrong_answer dari laporan peristiwa. Di laporan peristiwa level_wrong_answer, temukan kartu level_name. Anda akan melihat nilai yang terkait dengan parameter level_name pada kartu tersebut sebagai berikut.

Menurut screenshot di atas, Anda dapat dengan mudah mengetahui bahwa horizon memiliki jumlah jawaban salah tertinggi, yang berarti level ini sulit bagi pengguna dibandingkan dengan level lainnya.
Dengan menggunakan insight yang Anda dapatkan dari sini, Anda dapat memutuskan untuk tidak memberikan level sulit kepada pengguna pemula untuk mempertahankan rasio retensi yang tinggi.
Berapa banyak percobaan yang dilakukan untuk menyelesaikan level, rata-rata?
Dalam Kuis Gambar Keren, pengguna dapat mengirimkan jawaban untuk setiap level sebanyak yang mereka inginkan.
Karena Anda telah mengaktifkan pelaporan parameter pada parameter number_of_attempts di peristiwa level_success, Anda dapat melihat metrik mendetail untuk parameter tersebut.
Klik peristiwa level_success dari laporan peristiwa. Di laporan peristiwa level_success, temukan kartu number_of_attemps. Anda akan melihat rata-rata jumlah upaya di kartu tersebut sebagai berikut:

Anda dapat menggunakan insight dari sini untuk mengoptimalkan tingkat kesulitan game secara rata-rata. Misalnya, jika rata-rata jumlah percobaan terlalu mendekati 1, Anda dapat mempertimbangkan untuk membuat game sedikit lebih menantang.
Apakah pengguna mencoba menyelesaikan pertanyaan dengan mendapatkan petunjuk, meskipun mereka gagal menyelesaikan level terakhir?
Saat pengguna memutuskan untuk melewati level, peristiwa level_fail akan dipicu. Ada banyak alasan yang mendasari keputusan pengguna.
Namun, karena game dapat memberi mereka petunjuk setelah mereka menonton Iklan Video Reward, penting untuk mengetahui apakah pengguna mencoba menyelesaikan level dengan bantuan petunjuk.
Klik peristiwa level_fail dari laporan peristiwa. Di laporan peristiwa level_fail, temukan kartu hint_used. Anda akan melihat jumlah rata-rata parameter peristiwa hint_used. Perhatikan bahwa nilai parameter adalah 1 jika petunjuk digunakan dan 0 jika petunjuk tidak digunakan.

Jika angka pada kartu hint_used mendekati 0, itu adalah sinyal bahwa hadiah (petunjuk) tidak cukup membantu bagi pengguna ini. Selain itu, Anda kehilangan peluang untuk meningkatkan pendapatan dari Iklan Video Reward.
Oleh karena itu, Anda harus mempertimbangkan untuk menawarkan reward yang lebih besar, sehingga pengguna dapat berinteraksi dengan game secara lebih mendalam, yang akan meningkatkan pendapatan Anda dari Iklan Video Reward.
Berapa banyak level yang diselesaikan di setiap game, rata-rata?
Ada total 6 level untuk setiap game dalam Kuis Menggambar Keren. Setelah pengguna menyelesaikan 6 level (terlepas dari apakah mereka berhasil atau gagal di setiap level), peristiwa game_complete dipicu dengan number_of_correct_answers sebagai parameter. Parameter number_of_correct_answers menunjukkan jumlah level saat pengguna memberikan jawaban yang benar.
Klik peristiwa game_complete dari laporan peristiwa. Di laporan peristiwa game_complete, temukan kartu number_of_correct_answers. Anda akan melihat jumlah rata-rata parameter peristiwa number_of_correct_answers.

Jika rata-rata jumlah level yang diselesaikan terlalu rendah, Anda harus mempertimbangkan untuk menyusun ulang level dalam game untuk membantu orang menyelesaikan level awal dengan lebih mudah, sehingga mereka dapat terus memainkan game Anda tanpa kehilangan minat.
11. Selesai!
Anda telah menyelesaikan Codelab Android AdMob+Firebase 101. Anda dapat menemukan kode lengkap untuk Codelab ini di folder
101-complete_and_102-base.
Di bagian berikutnya dari Codelab AdMob+Firebase, Anda akan mempelajari cara menggunakan funnel untuk memvisualisasikan alur peristiwa aplikasi. Bagian berikutnya juga akan membahas cara menggunakan Remote Config dan pengujian A/B untuk mengoptimalkan nilai parameter dalam game tanpa update aplikasi.