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
存放區包含四個資料夾,如下所示:
- 101-base:您將在這個程式碼研究室中建構的程式碼。
- 101-complete_and_102-base - 完成本程式碼研究室的程式碼;102 程式碼研究室的起點。
- 102-complete:102 程式碼研究室完成後的程式碼。
匯入範例應用程式
啟動 Android Studio,然後在歡迎畫面中選擇「Import project」。接著,從您下載的程式碼中選取 101-base 目錄。
現在 Android Studio 應已開啟專案。
3. 設定獎勵影片廣告單元 (選用)
為了方便起見,範例應用程式已包含專屬的獎勵影片廣告單元。如果您不想在 AdMob 帳戶下建立新帳戶,可略過這個步驟。
若要在帳戶中建立新的 AdMob 應用程式,請按照下列說明操作:
- 前往 AdMob 控制台。
- 在「應用程式」選單中,按一下「新增應用程式」。
- 當系統詢問「您已經在 Google Play 或 App Store 發布應用程式」時,解答「否」。
- 將應用程式命名為「Awesome Drawing Quiz」。選擇「Android」做為「平台」,然後按一下「Add」。
在帳戶中建立 AdMob 應用程式後,請按照下方步驟建立新的獎勵影片廣告單元。
- 在 AdMob 前端按一下 [應用程式] 選單,然後從應用程式清單中選取「超棒繪圖測驗」。
- 按一下「新增廣告單元」,建立新的獎勵影片廣告單元。
- 針對廣告格式選取「獎勵廣告」。
- 視需要提供廣告單元名稱。接著將獎勵金額設為 1,並將獎勵項目設為「提示」 (這是應用程式目前提供給使用者的獎勵)。按一下「建立廣告單元」,建立新的獎勵影片廣告單元。
- 成功建立完成後,畫面會顯示類似下方的操作說明:
- 返回 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 控制台建立新專案
- 前往 Firebase 控制台。
- 選取「Add Project」,然後將專案命名為「Awesome Drawing Quiz」。確認「為這項專案啟用 Google Analytics」圓形按鈕已開啟。
- 選取要使用的 Google Analytics 帳戶。就大部分來說,選取「Firebase 預設帳戶」選項應該就足夠了;不過,如果您還想使用其他 Google Analytics 帳戶,請在這裡選取。
- 按一下「建立專案」。
新增 Android 應用程式
- 在新專案的總覽畫面中,按一下 [Add Firebase to your Android app] (將 Firebase 加入您的 Android 應用程式)。
- 輸入程式碼研究室的套件名稱:com.codelab.awesomedrawingquiz
- 為應用程式設定暱稱:「超棒繪圖測驗」
- 將「SHA-1」欄位留空,因為這項專案不需要 SHA-1。
- 選取「註冊應用程式」即可註冊應用程式。
在應用程式中加入 google-services.json 檔案
接下來,系統會顯示提示畫面,您可以在其中下載設定檔,其中包含應用程式所有必要的 Firebase 中繼資料。按一下「Download google-service.json」,然後將檔案複製到專案的 「app」目錄。
宣告依附元件版本
首先,請新增每個依附元件的版本,以便將 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。
- 前往 https://apps.admob.com 登入 AdMob 帳戶。
- 按一下側欄中的「應用程式」。
- 選取「Awesome Drawing Quiz」。如果「最近使用的應用程式」清單中不包含該應用程式,請按一下「查看所有應用程式」,搜尋您加進 AdMob 的所有應用程式。
- 按一下側欄中的「應用程式設定」。
- 按一下「連結 Firebase」。
- 選取「連結至現有的 Firebase 專案並建立新的 Firebase 應用程式」選項。然後選取下拉式選單中的「Awesome Drawing Quiz」專案。
- 點按「繼續」按鈕後,您會看見「已成功連結」訊息。按一下「完成」按鈕即可完成作業。
將 AdMob 應用程式連結至 Firebase 專案後,即可在 AdMob 和 Firebase 控制台中解鎖多項額外功能,方法如下:
收益資訊卡 (AdMob)
透過「收益」資訊卡,你可以集中查看所有可能的收益來源。支援的收益來源如下:
- AdMob (預估)
- 中介服務廣告聯播網 (觀察到的)
- 應用程式內購
- 電子商務購買
使用者指標資訊卡 (AdMob)
透過使用者指標資訊卡,您可以查看調整廣告體驗可能對使用者行為造成什麼影響。
獎勵廣告報表 (AdMob)
獎勵廣告報表提供多種指標,協助發布商瞭解使用者與獎勵廣告互動的情形。
總收益資訊卡 (Firebase)
將 AdMob 應用程式連結至 Firebase 後,Firebase 資訊主頁中的總收益資訊卡就會顯示 AdMob 收益,以及應用程式內購和電子商務購買。
廣告事件報表 (Firebase)
系統會自動收集廣告相關事件 (點擊、曝光和獎勵事件),並用於 Google Analytics for Firebase。
6. 執行專案
編譯並執行專案後,您會在應用程式啟動時看到以下畫面。
按一下 [開始遊戲] 後,螢幕上會顯示繪圖。您的任務是透過頂端顯示的提示猜測繪圖的名稱,即可推斷繪圖名稱的首字母和長度。
如果您不清楚繪圖的名稱,可以按一下「SKIP」按鈕跳過一個等級。
您可能會需要其他線索,以便猜出答案。只要按一下「HINT」按鈕並觀看獎勵影片廣告,就能獲得額外線索。使用者看完廣告後,系統會顯示一個額外信函做為獎勵。
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_NAME
和 FirebaseAnalytics.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_success
和 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)
...
}
}
接著在 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 可讓您以近乎即時的方式,在開發裝置上查看應用程式記錄的原始事件資料。
在開發的檢測階段進行驗證,這非常實用,可以幫助您找出分析實作方面的錯誤。
啟用偵錯模式
一般來說,系統大約會在一小時內以批次方式將應用程式記錄事件記錄下來,然後一起上傳。如要即時驗證數據分析導入作業,必須在開發裝置上啟用偵錯模式,以盡可能縮短延遲時間。
如要啟用偵錯模式,請完成下列步驟:
- 在 Android Studio 中開啟「Terminal」工具視窗 (依序點選「View」>「Tool Windows」>「Terminal」)。
- 執行下列指令 (確認測試 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 報表中顯示。
您可以按一下事件名稱來查看個別事件的詳細資訊。例如,以下螢幕截圖顯示與 level_start
事件相關的參數詳細資料。
詳情請參閱 DebugView 說明中心文章。
9. 啟用自訂維度和指標
根據預設,Google Analytics for Firebase 會收集事件總數。您需要為每個想查看的事件參數明確啟用該參數的報表功能。Google Analytics for Firebase 就能顯示其他資訊卡,顯示自訂參數的統計資料。
如要登錄自訂維度和指標,請按照下列步驟操作:
- 前往 Firebase 控制台,然後選取先前建立的 Awesome Drawing Quiz 專案。
- 按一下 [Analytics] >。導覽選單中的活動。
- 按一下 [管理自訂定義]。
- 在「自訂維度」分頁中,按一下「建立自訂維度」。
- 在「事件參數名稱」欄位中輸入 level_name,然後按一下「儲存」以完成參數登錄程序。
- 接著選取「自訂指標」分頁標籤,然後點選「建立自訂指標」。
- 請為下列參數輸入參數名稱以及測量單位。
參數名稱 | 參數類型 | 測量單位 |
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
參數相關聯的值,如下所示。
根據上方螢幕截圖,您可以輕鬆判斷水平問題的答案最多,這代表使用者難以與其他等級相比。
這時您可以根據這份洞察資料,決定不將困難的層級用於獎勵使用者,並維持高留存率。
平均來說,我有多少次清除過某個關卡?
在 Awesome Drawing 測驗 中,使用者可以視需要提交每個關卡的答案。
您已在 level_success
事件中啟用 number_of_attempts
參數的參數報表,因此可查看該參數的詳細指標。
按一下事件報表中的 level_success
事件。在「level_success
」事件報表中,找出「number_of_attemps
」資訊卡。這張資訊卡顯示的平均嘗試次數如下:
您可以根據這裡的深入分析資料,盡可能提高遊戲難度。舉例來說,如果平均嘗試次數太接近 1,不妨考慮讓遊戲變得更有挑戰性。
雖然他們無法淨個關卡,但還是希望收到提示來解決問題?
使用者決定略過某個關卡時,就會觸發 level_fail
事件。使用者做出決定的原因有很多,
不過,由於遊戲可以在使用者觀看獎勵影片廣告後給予提示,因此請務必瞭解使用者是否曾嘗試透過提示說明過關。
按一下事件報表中的 level_fail
事件。在「level_fail
」事件報表中,找出「hint_used
」資訊卡。您會看到平均 hint_used
個事件參數的數量。請注意,如果使用提示,參數值為 1,未使用提示時則為 0。
如果 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
個事件參數的數量。
如果清除關卡的平均數太低,建議您調整遊戲中的關卡大小,讓使用者更輕鬆過早關卡,這樣他們既不會失去興趣,也能繼續玩遊戲。
11. 全部完成!
您已完成 AdMob + Firebase 101 Android 程式碼研究室。您可以在 101-complete_and_102-base 資料夾中找到本程式碼研究室完成的程式碼。
在下一節的 AdMob + Firebase 程式碼研究室中,您將瞭解如何使用漏斗圖,以圖表呈現應用程式事件流程。下一部分也會介紹如何使用遠端設定和 A/B 測試,在不更新應用程式的情況下最佳化遊戲的參數值。