1. Pengantar
Iklan adalah bagian penting dari keseluruhan pengalaman pengguna di aplikasi Anda. Penerapan iklan yang baik dapat membantu meningkatkan pengalaman aplikasi Anda secara keseluruhan dan bahkan meningkatkan retensi serta engagement pengguna. Misalnya, Iklan reward memungkinkan Anda memberikan mata uang atau item dalam aplikasi kepada pengguna untuk menonton iklan video, sehingga pengguna dapat mencapai level baru yang akan membuat mereka terhenti dan akan melakukan churn.
Namun, membuat pengalaman iklan yang berkualitas tinggi tidak mudah. Anda mungkin memiliki pertanyaan seperti: Seberapa sering Anda harus menampilkan iklan ini? Di mana dan kapan Anda harus menampilkannya? Apa seharusnya penghargaan tersebut? Sayangnya, jawabannya berbeda dari aplikasi ke aplikasi dan dari penempatan ke penempatan. Tidak ada satu jawaban yang cocok untuk semua situasi.
Dengan Google Analytics for Firebase, AdMob, dan beberapa alat lain yang canggih dan mudah digunakan, yang ditawarkan Firebase, menyesuaikan aplikasi Anda dengan cara berbasis data menjadi jauh lebih mudah dan efisien. Hari ini, kami akan menunjukkan cara untuk memulainya.
Yang akan Anda bangun
Codelab ini adalah yang pertama dari tiga codelab yang akan memandu Anda membangun aplikasi bernama Awesome Drawing Quiz, sebuah game yang memungkinkan pemain menebak nama dari gambar tersebut. Tutorial ini akan menunjukkan cara menyertakan layanan Iklan Reward dan Firebase dalam game Anda.
Dalam codelab ini, Anda akan mengintegrasikan Google Analytics for Firebase untuk mencatat beberapa peristiwa aplikasi yang 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
- 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+ yang dilengkapi kabel USB untuk menghubungkan perangkat, atau Android Emulator yang menjalankan AVD (Perangkat Virtual Android) dengan image sistem yang mendukung Play Store/Google API
Bagaimana Anda menilai tingkat pengalaman Anda menggunakan AdMob?
Bagaimana Anda menilai 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 membuat clone repositori GitHub dari command line.
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
Repositori 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 & pemicu untuk codelab 102.
- 102-complete — Kode lengkap untuk codelab 102.
Mengimpor aplikasi awal
Luncurkan Android Studio dan pilih "Import project" di layar sambutan. Kemudian pilih direktori 101-base dari kode yang telah Anda download.
Sekarang Anda seharusnya sudah 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 langkah baru pada akun AdMob.
Untuk membuat aplikasi AdMob baru di akun Anda, ikuti petunjuk berikut:
- Buka Konsol AdMob.
- Dari menu Apps, klik "Add App".
- Saat ditanya "Apakah Anda telah 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 ini untuk membuat Unit Iklan Video Reward baru.
- Klik menu Apps 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 ke 1, dan item reward ke "hint" (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 serupa dengan berikut ini:
- Kembali ke project Android, lalu perbarui ID aplikasi dan konstanta ID unit iklan AdMob dengan 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 Add Project, lalu beri nama project Anda dengan "Awesome Drawing Quiz". Pastikan tombol pilihan Aktifkan Google Analytics untuk project ini diaktifkan.
- Pilih akun Google Analytics yang akan digunakan. Untuk sebagian besar, memilih opsi Akun Default untuk Firebase sudah cukup, tetapi jika Anda memiliki akun Google Analytics lain yang ingin digunakan, pilih di sini.
- Klik Create project.
Menambahkan aplikasi Android
- Dari layar ringkasan project baru Anda, klik Add Firebase to your Android app.
- Masukkan nama paket codelab: com.codelab.awesomedrawingquiz
- Berikan nama panggilan untuk aplikasi Anda: Awesome Drawing Quiz
- Biarkan kolom SHA-1 kosong karena SHA-1 tidak diperlukan untuk project ini.
- Pilih Register app untuk mendaftarkan aplikasi Anda.
Menambahkan file google-services.json ke aplikasi Anda
Selanjutnya, Anda akan melihat layar tempat Anda dapat mendownload file konfigurasi yang berisi semua metadata Firebase yang diperlukan untuk aplikasi Anda. Klik Download google-service.json, lalu salin file ke direktori app di project Anda.
Mendeklarasikan versi dependensi
Mari kita mulai dengan menambahkan versi dari setiap dependensi yang diperlukan untuk mengintegrasikan Firebase dalam project. Buka file dependencies.gradle
yang terletak 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 di file build.gradle
yang berada di direktori utama 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
seperti berikut:
app/build.gradle
apply plugin: 'com.android.application'
// TODO: Apply google-services plugin (101)
apply plugin: 'com.google.gms.google-services'
android {
...
}
dependencies {
...
}
Menambahkan 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'
...
}
...
Menyinkronkan project Anda dengan file gradle
Guna memastikan bahwa semua dependensi tersedia untuk aplikasi Anda, sinkronkan project Anda dengan file Gradle. Pilih File > Menu Sync Project with Gradle Files untuk menyinkronkan project Anda dengan file Gradle.
5. Tautkan AdMob ke Project Firebase
Selesaikan langkah-langkah di bawah ini 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 Anda tambahkan ke AdMob.
- Klik Setelan aplikasi di sidebar.
- Klik Link to 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 "DONE" untuk menyelesaikan.
Setelah Anda menautkan aplikasi AdMob ke Project Firebase, beberapa fitur tambahan di AdMob dan Firebase console akan terbuka seperti berikut:
Kartu pendapatan (AdMob)
Dari kartu Pendapatan, Anda dapat melihat secara menyeluruh semua kemungkinan sumber 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 dampak perubahan 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.
Total kartu pendapatan (Firebase)
Setelah Anda menautkan aplikasi AdMob ke Firebase, kartu Total pendapatan di dasbor Firebase akan menampilkan pendapatan dari AdMob bersama dengan 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, dan Anda dapat menyimpulkan huruf pertama dan panjang nama gambar tersebut.
Jika tidak tahu nama gambarnya, Anda dapat melewati level tersebut dengan mengklik tombol 'LEWATI'.
Anda mungkin menginginkan petunjuk tambahan yang membantu Anda menebak jawabannya. Anda bisa mendapatkan petunjuk tambahan dengan mengklik tombol 'HINT' dan menonton iklan Video Reward. Setelah Anda selesai menonton iklan, satu huruf tambahan akan diungkapkan sebagai reward.
7. Tambahkan 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 suatu tahapan. (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) | nama_level, jumlah_upaya, elapsed_time_sec, petunjuk_digunakan |
level_fail | saat pengguna melewati level | nama_level, jumlah_upaya, elapsed_time_sec, petunjuk_digunakan |
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 pada level (mis., "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 pada level (mis., "pisang") |
level_success | number_of_attempts | Jumlah upaya yang dilakukan untuk menyelesaikan level |
level_success | elapsed_time_sec | Waktu berlalu untuk menyelesaikan level, dalam detik |
level_success | hint_used | Apakah pengguna menggunakan petunjuk (menonton Iklan Video Reward) atau tidak menyelesaikan level (1: menggunakan petunjuk / 0: menyelesaikan level tanpa petunjuk) |
level_fail | level_name | Nama gambar yang ditampilkan pada level (mis., "pisang") |
level_fail | number_of_attempts | Jumlah upaya yang dilakukan untuk menyelesaikan level |
level_fail | elapsed_time_sec | Waktu berlalu untuk menyelesaikan level, dalam detik |
level_fail | hint_used | Apakah pengguna menggunakan petunjuk (menonton Iklan Video Reward) atau tidak 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 ke dalam log
Untuk mencatat peristiwa analisis dengan mudah, Anda akan membuat class bantuan untuk mengelola peristiwa kustom.
Pertama, buat file Kotlin baru (bukan class Kotlin) dan beri nama QuizAnalytics.kt
pada paket com.codelab.awesomedrawingquiz
. Buat kolom yang menentukan nama peristiwa kustom Anda 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 untuk setiap peristiwa. Perhatikan juga bahwa beberapa nama dan parameter peristiwa (FirebaseAnalytics.Event.LEVEL_NAME
dan FirebaseAnalytics.Event.LEVEL_START
) sudah 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())
}
}
Membuat log peristiwa analisis 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 sebelumnya Anda lakukan 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 update 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 untuk menerapkan peristiwa kustom. Pertama, dalam fungsi startGame()
, panggil logGameStart()
untuk menunjukkan bahwa game telah dimulai.
Karena logGameStart()
adalah fungsi ekstensi dari class FirebaseAnalytics
, Anda dapat memanggilnya dari instance class FirebaseAnalytics
.
GameViewModel.kt
fun startGame() {
...
// TODO: Log game_start event (101)
analytics.logGameStart()
...
}
Selanjutnya, dalam 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, dalam 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 analisis
Anda dapat menggunakan DebugView di Firebase console untuk memverifikasi bahwa peristiwa dicatat dengan benar. DebugView memungkinkan Anda melihat data peristiwa mentah yang dicatat ke dalam log oleh aplikasi Anda di perangkat pengembangan hampir secara real-time.
Hal ini sangat berguna untuk tujuan validasi selama fase instrumentasi pengembangan dan dapat membantu Anda menemukan error dalam penerapan analisis.
Mengaktifkan mode debug
Umumnya, peristiwa yang dicatat dalam aplikasi Anda dikelompokkan bersama selama sekitar satu jam dan diupload secara bersamaan. Untuk memvalidasi penerapan analisis dengan cepat, Anda harus mengaktifkan mode Debug di perangkat pengembangan untuk mengupload peristiwa dengan penundaan minimal.
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 pada perangkat pengujian, buka project Anda di Firebase console, lalu pilih Analytics > DebugView dari menu. Kemudian, di perangkat pengujian, mainkan game Anda untuk melihat peristiwa yang dicatat ke dalam log dan ditampilkan di laporan DebugView.
Anda dapat mengakses informasi mendetail tentang setiap acara dengan mengklik nama acara. 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 diinginkan, Anda harus mengaktifkan pelaporan secara eksplisit untuk parameter tersebut. Google Analytics for Firebase selanjutnya dapat menampilkan kartu tambahan untuk menunjukkan statistik parameter kustom.
Untuk mendaftarkan metrik dan dimensi kustom:
- Buka Firebase console dan pilih project Awesome Drawing Quiz yang telah Anda buat sebelumnya.
- Klik Analytics > Peristiwa 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 dan 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
Karena Anda telah menambahkan beberapa acara dalam game, Anda seharusnya dapat menjawab pertanyaan tentang perilaku pengguna 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 mencari tahu jumlah peristiwa level_wrong_answer
yang dipicu per level.
Klik level_wrong_answer
dari laporan peristiwa. Dalam 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 sulit bagi pengguna dibandingkan dengan level lainnya.
Dengan menggunakan insight yang Anda peroleh dari sini, Anda dapat memutuskan untuk tidak memberikan level yang sulit kepada pengguna baru untuk mempertahankan rasio retensi yang tinggi.
Rata-rata, berapa banyak percobaan yang dilakukan untuk menyelesaikan level?
Pada Awesome Drawing Quiz, pengguna dapat mengirimkan jawaban ke 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. Dalam laporan peristiwa level_success
, temukan kartu number_of_attemps
. Anda akan melihat jumlah rata-rata percobaan pada kartu tersebut sebagai berikut:
Anda dapat menggunakan insight dari sini untuk mengoptimalkan tingkat kesulitan game rata-rata. Misalnya, jika jumlah rata-rata percobaan terlalu dekat dengan 1, Anda dapat mempertimbangkan untuk membuat game sedikit lebih menantang.
Apakah pengguna mencoba menyelesaikan pertanyaan dengan mendapatkan petunjuk, meskipun akhirnya gagal menyelesaikan satu level?
Saat pengguna memutuskan untuk melewati level, peristiwa level_fail
akan dipicu. Ada banyak alasan untuk keputusan pengguna.
Namun, karena game dapat memberikan petunjuk setelah mereka menonton Iklan Video Reward, penting untuk mengetahui apakah pengguna mencoba menyelesaikan level dengan bantuan petunjuk tersebut.
Klik peristiwa level_fail
dari laporan peristiwa. Dalam laporan peristiwa level_fail
, temukan kartu hint_used
. Anda akan melihat jumlah rata-rata dari hint_used
parameter peristiwa. Perhatikan bahwa nilai parameter adalah 1 jika petunjuk digunakan dan 0 jika petunjuk tidak digunakan.
Jika angka di kartu hint_used
mendekati 0, itu adalah sinyal bahwa reward (petunjuk) tidak cukup membantu bagi pengguna ini. Anda juga akan 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, sehingga memberi Anda peningkatan pendapatan dari Iklan Video Reward.
Berapa rata-rata level yang diselesaikan di setiap game?
Ada total 6 level untuk setiap game dalam Awesome Drawing Quiz. Setelah pengguna menyelesaikan 6 level (terlepas apakah mereka menyelesaikan atau gagal pada setiap level), peristiwa game_complete
dipicu dengan number_of_correct_answers
sebagai parameter. Parameter number_of_correct_answers
menunjukkan jumlah level tempat pengguna memberikan jawaban yang benar.
Klik peristiwa game_complete
dari laporan peristiwa. Dalam laporan peristiwa game_complete, temukan kartu number_of_correct_answers
. Anda akan melihat jumlah rata-rata dari number_of_correct_answers
parameter peristiwa.
Jika jumlah rata-rata level yang diselesaikan terlalu rendah, sebaiknya pertimbangkan untuk mengatur ulang level dalam game agar pengguna lebih mudah menyelesaikan level sebelumnya, sehingga mereka dapat terus bermain game tanpa kehilangan minat.
11. Selesai!
Anda telah menyelesaikan AdMob+Firebase 101 Android Codelab. Anda dapat menemukan kode lengkap untuk Codelab ini di folder 101-complete_and_102-base.
Di bagian selanjutnya dari Codelab AdMob+Firebase, Anda akan mempelajari cara menggunakan funnel untuk memvisualisasikan alur peristiwa aplikasi. Bagian selanjutnya juga akan membahas cara menggunakan Remote Config dan A/B testing untuk mengoptimalkan parameter value dalam game tanpa update aplikasi.