AdMob+Firebase 入門 Android:設定與Analytics 基本概念

AdMob + Firebase 指南 Android 版:設定與Analytics 基本概念

程式碼研究室簡介

subject上次更新時間:8月 23, 2022
account_circle作者:Taeho Kim

1. 簡介

廣告是應用程式整體使用者體驗中很重要的一環。良好的廣告導入方式有助於提升整體應用程式體驗,甚至提高使用者留存率和參與度。舉例來說,獎勵廣告可讓使用者在觀看影片廣告後獲得應用程式內貨幣或道具,如此一來,使用者就能到達新的高度,以免他們卡住不動。

不過,提供絕佳的廣告體驗並不容易。您或許會想問:這些廣告的顯示頻率為何?請問你該在何時何地放送這些素材資源?獎勵內容是什麼?可惜的是,答案會因應用程式和刊登位置而有所差異。沒有一體適用的答案。

藉助 Google Analytics for Firebase、AdMob 和其他 Firebase 簡單易用的工具,輕鬆以資料為導向微調應用程式,操作起來更加輕鬆簡單。今天我們將說明如何踏出第一步!

建構項目

本程式碼研究室是前三個程式碼研究室之一,可引導您建構一款名為 Awesome Drawing Quiz 的應用程式,這款遊戲可讓玩家猜測繪圖的名稱。說明如何在遊戲中加入獎勵廣告和 Firebase 服務。

在本程式碼研究室中,您將整合 Google Analytics for Firebase 來記錄部分重要的應用程式事件。以及如何讀取 Firebase 控制台中顯示的應用程式數據分析。

進行本程式碼研究室時,如果你遇到任何問題 (例如程式碼錯誤、文法錯誤或用詞不明確等),請透過程式碼研究室左下角的「回報錯誤」連結回報問題。

課程內容

  • 如何在應用程式中設定 Google Analytics for Firebase
  • 如何記錄應用程式事件
  • 如何讀取 Firebase 控制台中顯示的應用程式數據分析

軟硬體需求

  • Android Studio 4.1 以上版本
  • Google 帳戶
  • 搭載 Android 5.0 以上版本的測試裝置 (使用 USB 傳輸線連接裝置),或搭載支援 Play 商店/Google API 的系統映像檔執行 AVD (Android 虛擬裝置) 的 Android Emulator (Android 虛擬裝置)

您對 AdMob 使用體驗的評價如何?

你對 Firebase 的使用體驗有何評價?

2. 設定開發環境

下載程式碼

點選下方按鈕,即可下載這個程式碼研究室的所有程式碼:

將下載的 ZIP 檔案解壓縮。這會將根資料夾解壓縮,並命名為 admob-firebase-codelabs-android

...或透過指令列複製 GitHub 存放區。

$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android

存放區包含四個資料夾,如下所示:

  • android_studio_folder.png101-base:您將在這個程式碼研究室中建構的程式碼。
  • android_studio_folder.png101-complete_and_102-base - 完成本程式碼研究室的程式碼;102 程式碼研究室的起點。
  • android_studio_folder.png102-complete:102 程式碼研究室完成後的程式碼。

匯入範例應用程式

啟動 Android Studio,然後在歡迎畫面中選擇「Import project」。接著,從您下載的程式碼中選取 101-base 目錄。

現在 Android Studio 應已開啟專案。

3. 設定獎勵影片廣告單元 (選用)

為了方便起見,範例應用程式已包含專屬的獎勵影片廣告單元。如果您不想在 AdMob 帳戶下建立新帳戶,可略過這個步驟

若要在帳戶中建立新的 AdMob 應用程式,請按照下列說明操作:

  1. 前往 AdMob 控制台
  2. 在「應用程式」選單中,按一下「新增應用程式」
  3. 當系統詢問「您已經在 Google Play 或 App Store 發布應用程式」時,解答「」。
  4. 將應用程式命名為「Awesome Drawing Quiz」。選擇「Android」做為「平台」,然後按一下「Add」

在帳戶中建立 AdMob 應用程式後,請按照下方步驟建立新的獎勵影片廣告單元。

  1. 在 AdMob 前端按一下 [應用程式] 選單,然後從應用程式清單中選取「超棒繪圖測驗」。
  2. 按一下「新增廣告單元」,建立新的獎勵影片廣告單元。
  3. 針對廣告格式選取「獎勵廣告」

7672f41ec611101b.png

  1. 視需要提供廣告單元名稱。接著將獎勵金額設為 1,並將獎勵項目設為「提示」 (這是應用程式目前提供給使用者的獎勵)。按一下「建立廣告單元」,建立新的獎勵影片廣告單元。

6d067814a2c38264.png

  1. 成功建立完成後,畫面會顯示類似下方的操作說明:ff872a005a07b75e.png
  2. 返回 Android 專案,並將 AdMob 應用程式 ID 和廣告單元 ID 常數更新為您在上一個步驟中建立的常數。

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. 設定 Firebase 專案

透過 Firebase 控制台建立新專案

  1. 前往 Firebase 控制台
  2. 選取「Add Project」,然後將專案命名為「Awesome Drawing Quiz」。確認「為這項專案啟用 Google Analytics」圓形按鈕已開啟。
  3. 選取要使用的 Google Analytics 帳戶。就大部分來說,選取「Firebase 預設帳戶」選項應該就足夠了;不過,如果您還想使用其他 Google Analytics 帳戶,請在這裡選取。
  4. 按一下「建立專案」

新增 Android 應用程式

  1. 在新專案的總覽畫面中,按一下 [Add Firebase to your Android app] (將 Firebase 加入您的 Android 應用程式)
  2. 輸入程式碼研究室的套件名稱:com.codelab.awesomedrawingquiz
  3. 為應用程式設定暱稱:「超棒繪圖測驗」
  4. 將「SHA-1」欄位留空,因為這項專案不需要 SHA-1。
  5. 選取「註冊應用程式」即可註冊應用程式。

在應用程式中加入 google-services.json 檔案

接下來,系統會顯示提示畫面,您可以在其中下載設定檔,其中包含應用程式所有必要的 Firebase 中繼資料。按一下「Download google-service.json」,然後將檔案複製到專案的 android_studio_folder.png「app」目錄。

32419a0fa25a1405.png

宣告依附元件版本

首先,請新增每個依附元件的版本,以便將 Firebase 整合至專案。開啟專案根目錄中的 dependencies.gradle 檔案,然後新增 Google 服務外掛程式、Firebase Analytics SDK 和 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'

   
...
}

將 google-services 外掛程式套用至應用程式

Google 服務外掛程式會使用 google-services.json 檔案,將您的應用程式設定為使用 Firebase。

在專案根目錄的 build.gradle 檔案中,將 google-services 新增為類別路徑。

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"

       
...
   
}
}

...

接著,在 app/build.gradle 檔案中新增一行,以套用 google-services 外掛程式,如下所示:

app/build.gradle

apply plugin: 'com.android.application'

// TODO: Apply google-services plugin (101)
apply plugin
: 'com.google.gms.google-services'

android
{
   
...
}

dependencies
{
   
...
}

將 Firebase SDK 加進專案

同樣在 app/build.gradle 檔案中,將 Analytics SDK 加進應用程式依附元件。

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'

   
...
}

...

專案與 Gradle 檔案同步處理

為確保應用程式能夠使用所有依附元件,請將專案與 Gradle 檔案同步處理。選取「檔案」>將專案與 Gradle 檔案同步處理選單,將專案與 Gradle 檔案同步處理。

5. 將 AdMob 連結至 Firebase 專案

完成下列步驟,將應用程式連結至 Firebase。

  1. 前往 https://apps.admob.com 登入 AdMob 帳戶。
  2. 按一下側欄中的「應用程式」。
  3. 選取「Awesome Drawing Quiz」。如果「最近使用的應用程式」清單中不包含該應用程式,請按一下「查看所有應用程式」,搜尋您加進 AdMob 的所有應用程式。
  4. 按一下側欄中的「應用程式設定」。
  5. 按一下「連結 Firebase」
  6. 選取「連結至現有的 Firebase 專案並建立新的 Firebase 應用程式」選項。然後選取下拉式選單中的「Awesome Drawing Quiz」專案。
  7. 點按「繼續」按鈕後,您會看見「已成功連結」訊息。按一下「完成」按鈕即可完成作業。

將 AdMob 應用程式連結至 Firebase 專案後,即可在 AdMob 和 Firebase 控制台中解鎖多項額外功能,方法如下:

收益資訊卡 (AdMob)

透過「收益」資訊卡,你可以集中查看所有可能的收益來源。支援的收益來源如下:

  • AdMob (預估)
  • 中介服務廣告聯播網 (觀察到的)
  • 應用程式內購
  • 電子商務購買

10fe118249e11150.png

使用者指標資訊卡 (AdMob)

透過使用者指標資訊卡,您可以查看調整廣告體驗可能對使用者行為造成什麼影響。

5f56366f1b31d4a1.png

獎勵廣告報表 (AdMob)

獎勵廣告報表提供多種指標,協助發布商瞭解使用者與獎勵廣告互動的情形。

658a2868777690ea.png

總收益資訊卡 (Firebase)

將 AdMob 應用程式連結至 Firebase 後,Firebase 資訊主頁中的總收益資訊卡就會顯示 AdMob 收益,以及應用程式內購和電子商務購買。

98cb283977b023a.png

廣告事件報表 (Firebase)

系統會自動收集廣告相關事件 (點擊、曝光和獎勵事件),並用於 Google Analytics for Firebase。

bf77bd8c00c1441b.png

6. 執行專案

編譯並執行專案後,您會在應用程式啟動時看到以下畫面。

15f1d8041988974c.png

按一下 [開始遊戲] 後,螢幕上會顯示繪圖。您的任務是透過頂端顯示的提示猜測繪圖的名稱,即可推斷繪圖名稱的首字母和長度。

8e87e96256d6874a.png 9c4a0143c3234cb2.png

如果您不清楚繪圖的名稱,可以按一下「SKIP」按鈕跳過一個等級。

您可能會需要其他線索,以便猜出答案。只要按一下「HINT」按鈕並觀看獎勵影片廣告,就能獲得額外線索。使用者看完廣告後,系統會顯示一個額外信函做為獎勵。

edcf6f0d833ea4ea.png 47ab9a07b1c71711.png

7. 新增應用程式事件

在「超級繪圖測驗」中深入瞭解使用者歷程,您可以定義一些自訂事件來追蹤使用者在遊戲中的行為,如下所示:

事件名稱

已觸發...

參數

game_start

使用者開始新遊戲時

level_start

使用者在階段開始新關卡 (新的繪圖測驗) 時。(一個階段共有 6 層)

level_name

level_wrong_answer

使用者提交錯誤的答案時

level_name

ad_reward_prompt

當使用者輕觸提示按鈕,系統提示觀看獎勵影片廣告時

ad_unit_id

ad_reward_impression

使用者開始觀看獎勵影片廣告時

ad_unit_id

level_success

當使用者提交正確答案時 (釐清等級)

level_name、number_of_attempts、elapsed_time_sec、hint_used

level_fail

使用者略過特定關卡時

level_name、number_of_attempts、elapsed_time_sec、hint_used

game_complete

比賽結束後

number_of_correct_answers

與每個事件相關的每個參數的說明如下:

事件名稱

參數名稱

說明

level_start

level_name

在層級顯示的繪圖名稱 (例如「香蕉」)

level_wrong_answer

level_name

使用者提交錯誤的答案時

ad_reward_prompt

ad_unit_id

用於顯示獎勵影片廣告的廣告單元 ID

ad_reward_impression

ad_unit_id

用於顯示獎勵影片廣告的廣告單元 ID

level_success

level_name

在層級顯示的繪圖名稱 (例如「香蕉」)

level_success

number_of_attempts

嘗試過通關卡的次數

level_success

elapsed_time_sec

清除特定層級所需的時間長度 (以秒為單位)

level_success

hint_used

使用者是否使用提示 (觀看獎勵影片廣告) 或不清除特定關卡 (1:使用提示 / 0:在沒有提示的情況下清除關卡)

level_fail

level_name

在層級顯示的繪圖名稱 (例如「香蕉」)

level_fail

number_of_attempts

嘗試過通關卡的次數

level_fail

elapsed_time_sec

清除特定層級所需的時間長度 (以秒為單位)

level_fail

hint_used

使用者是否使用提示 (觀看獎勵影片廣告) 或不清除特定關卡 (1:使用提示 / 0:在沒有提示的情況下清除關卡)

game_complete

number_of_correct_answers

在遊戲中清除的關卡數量

建立用來記錄自訂事件的輔助類別

如要輕鬆記錄數據分析事件,請建立輔助類別來管理自訂事件。

首先,請建立新的 Kotlin 檔案 (而非 Kotlin 類別),然後在 com.codelab.awesomedrawingquiz 套件中將其命名為 QuizAnalytics.kt。建立用來定義自訂事件名稱及其參數的欄位。

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"

然後新增擴充功能函式以便記錄遊戲中的自訂事件。請注意,大多數的自訂事件都包含參數,可讓您進一步瞭解每個事件。另請注意,Analytics 已定義幾個事件名稱和參數 (FirebaseAnalytics.Event.LEVEL_NAMEFirebaseAnalytics.Event.LEVEL_START),因此我們要使用。

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())
   
}
}

遊戲中的記錄檔分析事件

GameViewModel 類別中,為 FirebaseAnalytics 執行個體新增屬性。

GameViewModel.kt

class GameViewModel(
   
...
   
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
   
private val analytics: FirebaseAnalytics,
) : ViewModel() {
   
...
}

接著,在 AwesomeDrawingQuizViewModelFactory 類別中新增屬性,與先前在 GameViewModel 中的操作相同。

AwesomeDrawingQuizViewModelFactory.kt

class AwesomeDrawingQuizViewModelFactory(
   
...
   
// TODO: Accept FirebaseAnalytics instance as a parameter (101)
   
private val analytics: FirebaseAnalytics,
) : ViewModelProvider.Factory {
   
...
}

接著,在 AwesomeDrawingQuiz 類別中新增 provideFirebaseAnalytics() 函式並更新 provideViewModelFactory() 函式,將 FirebaseAnalytics 例項傳遞至 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

   
...

}

您現在可以開始導入自訂事件了。首先,在 startGame() 函式中呼叫 logGameStart(),表示遊戲已啟動。

由於 logGameStart()FirebaseAnalytics 類別的擴充功能函式,因此可以從 FirebaseAnalytics 類別的執行個體呼叫。

GameViewModel.kt

fun startGame() {
   
...

   
// TODO: Log game_start event (101)
    analytics
.logGameStart()

   
...
}

接著,在 checkAnswer() 函式中新增 level_successlevel_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)

       
...
   
}
}

接著在 skipLevel() 函式中新增 level_fail 事件,以便將等級標示為失敗。

GameViewModel.kt

fun skipLevel() {
   
...

   
// TODO: Log level_fail event (101)
    analytics
.logLevelFail(
        levelName
= drawing.word,
        numberOfAttempts
= numAttempts,
        elapsedTimeSec
= elapsedTimeInSeconds,
        hintUsed
= isHintUsed,
   
)

   
...
}

接著,實作 logAdRewardPrompt()logAdRewardImpression() 函式,追蹤使用者針對獎勵影片廣告的行為。

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)
}

最後,修改 requestNewDrawing()finishGame() 函式,加入 level_start 和 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. 偵錯數據分析事件

您可以使用 Firebase 控制台中的 DebugView,驗證系統是否正確記錄事件。DebugView 可讓您以近乎即時的方式,在開發裝置上查看應用程式記錄的原始事件資料。

在開發的檢測階段進行驗證,這非常實用,可以幫助您找出分析實作方面的錯誤。

啟用偵錯模式

一般來說,系統大約會在一小時內以批次方式將應用程式記錄事件記錄下來,然後一起上傳。如要即時驗證數據分析導入作業,必須在開發裝置上啟用偵錯模式,以盡可能縮短延遲時間。

如要啟用偵錯模式,請完成下列步驟:

  1. 在 Android Studio 中開啟「Terminal」工具視窗 (依序點選「View」>「Tool Windows」>「Terminal」)。

c8dc1b4f08a224b8.png

  1. 執行下列指令 (確認測試 Android 裝置已連接至電腦或 Android Emulator 正在執行):
adb shell setprop debug.firebase.analytics.app com.codelab.awesomedrawingquiz

偵錯模式會保持啟用狀態,直到您執行下列指令來明確停用偵錯模式為止:

adb shell setprop debug.firebase.analytics.app .none.

使用 DebugView 對 Analytics 事件進行偵錯

在測試裝置上啟用偵錯模式後,請前往 Firebase 控制台中的專案,然後選取「Analytics」>DebugView」。接著,在測試裝置上玩遊戲,看看系統會記錄事件並在 DebugView 報表中顯示。

827059255d09ac00.png

您可以按一下事件名稱來查看個別事件的詳細資訊。例如,以下螢幕截圖顯示與 level_start 事件相關的參數詳細資料。

475db00d05d03ab8.png

詳情請參閱 DebugView 說明中心文章

9. 啟用自訂維度和指標

根據預設,Google Analytics for Firebase 會收集事件總數。您需要為每個想查看的事件參數明確啟用該參數的報表功能。Google Analytics for Firebase 就能顯示其他資訊卡,顯示自訂參數的統計資料。

如要登錄自訂維度和指標,請按照下列步驟操作:

  1. 前往 Firebase 控制台,然後選取先前建立的 Awesome Drawing Quiz 專案。
  2. 按一下 [Analytics] >。導覽選單中的活動
  1. 按一下 [管理自訂定義]
  2. 在「自訂維度」分頁中,按一下「建立自訂維度」
  3. 在「事件參數名稱」欄位中輸入 level_name,然後按一下「儲存」以完成參數登錄程序。

3d20ee9d7de74e9b.png

  1. 接著選取「自訂指標」分頁標籤,然後點選「建立自訂指標」
  2. 請為下列參數輸入參數名稱以及測量單位。

參數名稱

參數類型

測量單位

number_of_attempts

數字

標準

hint_used

數字

標準

elapsed_time_sec

數字

number_of_correct_answers

數字

標準

10. 透過事件報表取得洞察資料

由於您已在遊戲中新增幾個事件,應該就能回答有關遊戲使用者行為的問題。以下列出幾項可透過 Firebase 事件報表取得的洞察資料。

哪個層級的錯誤答案最多?

為回答這個問題,您需要瞭解各層級觸發的 level_wrong_answer 事件數量。

按一下事件報表中的 level_wrong_answer。在「level_wrong_answer」事件報表中,找出「level_name」資訊卡。資訊卡上會顯示與 level_name 參數相關聯的值,如下所示。

25da426bbc0c612c.png

根據上方螢幕截圖,您可以輕鬆判斷水平問題的答案最多,這代表使用者難以與其他等級相比。

這時您可以根據這份洞察資料,決定不將困難的層級用於獎勵使用者,並維持高留存率。

平均來說,我有多少次清除過某個關卡?

Awesome Drawing 測驗 中,使用者可以視需要提交每個關卡的答案。

您已在 level_success 事件中啟用 number_of_attempts 參數的參數報表,因此可查看該參數的詳細指標。

按一下事件報表中的 level_success 事件。在「level_success」事件報表中,找出「number_of_attemps」資訊卡。這張資訊卡顯示的平均嘗試次數如下:

43de290f9f1a0ac9.png

您可以根據這裡的深入分析資料,盡可能提高遊戲難度。舉例來說,如果平均嘗試次數太接近 1,不妨考慮讓遊戲變得更有挑戰性。

雖然他們無法淨個關卡,但還是希望收到提示來解決問題?

使用者決定略過某個關卡時,就會觸發 level_fail 事件。使用者做出決定的原因有很多,

不過,由於遊戲可以在使用者觀看獎勵影片廣告後給予提示,因此請務必瞭解使用者是否曾嘗試透過提示說明過關。

按一下事件報表中的 level_fail 事件。在「level_fail」事件報表中,找出「hint_used」資訊卡。您會看到平均 hint_used 個事件參數的數量。請注意,如果使用提示,參數值為 1,未使用提示時則為 0。

313814372cd7c8a4.png

如果 hint_used 資訊卡上的數字接近 0,表示獎勵 (提示) 對這些使用者來說不夠實用。而獎勵影片廣告正是您增加相關收益的大好機會。

因此,建議您提供較大的獎勵,讓使用者能更深入與遊戲互動,進而增加獎勵影片廣告帶來的收益。

每款遊戲平均清除了多少關卡?

「超棒繪圖測驗」每款遊戲總共有 6 個關卡。使用者完成 6 個關卡後 (無論每個關卡清除或失敗),都會以 number_of_correct_answers 做為參數來觸發 game_complete 事件。number_of_correct_answers 參數代表使用者提供正確答案的階層數。

按一下事件報表中的「game_complete」事件。在 game_complete 事件報表中,找出「number_of_correct_answers」資訊卡。您會看到平均 number_of_correct_answers 個事件參數的數量。

d9eeaa019d1bceb4.png

如果清除關卡的平均數太低,建議您調整遊戲中的關卡大小,讓使用者更輕鬆過早關卡,這樣他們既不會失去興趣,也能繼續玩遊戲。

11. 大功告成!

您已完成 AdMob + Firebase 101 Android 程式碼研究室。您可以在 android_studio_folder.png101-complete_and_102-base 資料夾中找到本程式碼研究室完成的程式碼。

在下一節的 AdMob + Firebase 程式碼研究室中,您將瞭解如何使用漏斗圖,以圖表呈現應用程式事件流程。下一部分也會介紹如何使用遠端設定和 A/B 測試,在不更新應用程式的情況下最佳化遊戲的參數值。