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

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 傳輸線;或是執行 AVD (Android 虛擬裝置) 的 Android 模擬器,以及支援 Play 商店/Google API 的系統映像檔

您對 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」做為平台,然後按一下「新增」

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

  1. 在 AdMob 前端按一下「應用程式」選單,然後從應用程式清單中選取「Awesome Drawing Quiz」
  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. 選取「新增專案」,然後將專案命名為「Awesome Drawing Quiz」。確認「啟用這項專案的 Google Analytics 功能」單選按鈕已開啟。
  3. 選取要使用的 Google Analytics 帳戶。對大多數使用者來說,選取「Firebase 預設帳戶」選項就已足夠,但如果您想使用其他 Google Analytics 帳戶,請在此選取。
  4. 按一下「建立專案」

新增 Android 應用程式

  1. 在新的專案總覽畫面中,按一下「將 Firebase 新增至您的 Android 應用程式」
  2. 輸入 Codelab 的套件名稱:com.codelab.awesomedrawingquiz
  3. 為應用程式設定暱稱:Awesome Drawing Quiz
  4. 由於這項專案不需要 SHA-1,請將 SHA-1 欄位留空。
  5. 選取「註冊應用程式」來註冊應用程式。

將 google-services.json 檔案新增至應用程式

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

32419a0fa25a1405.png

宣告依附元件版本

首先,請新增專案中整合 Firebase 時所需的各項依附元件版本。開啟專案根目錄中的 dependencies.gradle 檔案,然後新增 google-services 外掛程式、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-services 外掛程式會使用 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 檔案同步處理。選取「File」>「Sync Project with Gradle Files」選單,將專案與 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」(略過) 按鈕跳過關卡。

你可能需要額外提示來猜出答案。點選「提示」按鈕並觀看獎勵影片廣告,即可獲得額外提示。看完廣告後,系統會揭露一個額外字母做為獎勵。

edcf6f0d833ea4ea.png 47ab9a07b1c71711.png

7. 新增應用程式事件

如要深入瞭解「Awesome Drawing Quiz」中的使用者歷程,請定義幾個自訂事件,追蹤使用者在遊戲中的行為,如下所示:

事件名稱

已觸發...

參數

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

在遊戲中完成的關卡數

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

為輕鬆記錄數據分析事件,您將建立輔助類別來管理自訂事件。

首先,請在 com.codelab.awesomedrawingquiz 套件下建立新的 Kotlin 檔案 (不是 Kotlin 類別),並將其命名為 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())
    }
}

在遊戲中記錄 Analytics 事件

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. 偵錯 Analytics 事件

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

這項工具在開發階段的插碼程序中非常實用,有助於驗證,並找出 Analytics 導入作業中的任何錯誤。

啟用偵錯模式

一般來說,應用程式記錄的事件會在大約一小時內分批上傳。如要即時驗證 Analytics 導入作業,請在開發裝置上啟用偵錯模式,以盡量減少延遲時間的方式上傳事件。

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

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

c8dc1b4f08a224b8.png

  1. 執行下列指令 (請確認測試 Android 裝置已連上電腦,或 Android 模擬器正在執行):
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」>「Events」
  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 Quiz」中,使用者可以盡情提交各個等級的答案。

由於您已在 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,表示獎勵 (提示) 對這些使用者來說不夠實用。此外,您也錯失了透過獎勵影片廣告提高收益的機會。

因此,建議您提供較豐厚的獎勵,讓使用者更投入遊戲,進而提升獎勵影片廣告的收益。

每場遊戲平均通過多少關卡?

在「Awesome Drawing Quiz」中,每款遊戲共有 6 個等級。使用者完成 6 個關卡後 (不論是否過關),系統都會觸發 game_complete 事件,並以 number_of_correct_answers 做為參數。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 測試,在不更新應用程式的情況下,最佳化遊戲中的參數值。