1. 簡介
廣告是應用程式整體使用者體驗的重要一環。妥善導入廣告有助於提升整體應用程式體驗,甚至提高使用者留存率和參與度。舉例來說,透過獎勵廣告,您可以提供應用程式內貨幣或商品做為獎勵。使用者只要觀看影片廣告,就能獲得獎勵,在遊戲中達到新高度,避免卡關而流失。
不過,要打造優質廣告體驗並不容易。您可能會想知道:這些廣告的顯示頻率應為多少?您應該在何時何地顯示這些廣告?獎勵應為何?很抱歉,答案會因應用程式和刊登位置而異。沒有一體適用的答案。
有了 Google Analytics for Firebase、AdMob,以及 Firebase 提供的其他多種強大且易於使用的工具,您現在可以更輕鬆地根據資料微調應用程式,並簡化相關程序。今天,我們將說明如何開始使用!
建構項目
本程式碼研究室是三部系列的第一部,將引導您建構名為「Awesome Drawing Quiz」的應用程式。這款遊戲可讓玩家猜測繪圖名稱。並示範如何在遊戲中加入獎勵廣告和 Firebase 服務。
在本程式碼研究室中,您將整合 Google Analytics for Firebase,記錄一些重要的應用程式事件。此外,您也會瞭解如何解讀 Firebase 控制台中顯示的應用程式數據分析。
|
|
課程內容
- 如何在應用程式中設定 Google Analytics for Firebase
- 如何記錄應用程式事件
- 如何解讀 Firebase 控制台中顯示的應用程式數據分析
軟硬體需求
- Unity 2018.4.4f1 以上版本
- Xcode 10 以上版本 (用於建構 iOS 目標)
- Google 帳戶
- 搭載 Android 5.0 以上版本的測試裝置,以及用來連接裝置的 USB 傳輸線;或是執行 AVD(Android 虛擬裝置) 的 Android 模擬器,以及支援 Play 商店/Google API 的系統映像檔
- 搭載 iOS 8.0 以上版本的 iOS 裝置或模擬器
您對 AdMob 的使用經驗程度為何?
您對 Firebase 的經驗程度如何?
2. 設定開發環境
下載程式碼
點選下方按鈕即可下載這個程式碼研究室的所有程式碼:
將下載的 ZIP 檔案解壓縮。這會解壓縮名為「admob-firebase-codelabs-unity-master」的根資料夾。
...或從指令列複製 GitHub 存放區。
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-unity
存放區包含下列四個資料夾:
101-base:您將在本程式碼研究室中建構的起始程式碼。
101-complete_and_102-base:本程式碼研究室的完成程式碼,以及 102 程式碼研究室的範例程式碼。
102-complete:102 程式碼研究室的完成程式碼。
準備必要檔案
「Awesome Drawing Quiz」使用多個開放原始碼,因此必須編譯並執行專案。
開啟終端機,然後移至存放區根目錄。接著,從終端機執行 ./gradlew :prepareThirdPartyFiles (Windows 上的 gradlew.bat :prepareThirdPartyFiles),將必要檔案複製到專案中。
匯入範例應用程式
啟動 Unity,然後在歡迎畫面中選擇「Open」。然後從下載的程式碼中選取 101-base 目錄。
現在應該已在 Unity 中開啟專案。
3. 設定獎勵影片廣告單元 (選用)
為方便起見,範例應用程式已包含專用的獎勵影片廣告單元。如果您不想在 AdMob 帳戶下建立新的應用程式,可以略過這個步驟。
Android 設定
如要在帳戶中建立新的 AdMob 應用程式,請按照下列操作說明進行:
- 前往 AdMob 控制台。
- 在「應用程式」選單中,按一下「新增應用程式」。
- 系統詢問「您在 Google Play 或 App Store 發布過應用程式嗎?」時,請回答「否」。
- 將應用程式命名為「Awesome Drawing Quiz」,選擇「Android」做為平台,然後按一下「新增」。
在帳戶中建立 AdMob 應用程式後,請按照下列步驟建立新的獎勵影片廣告單元。
- 在 AdMob 前端按一下「應用程式」選單,然後從應用程式清單中選取「Awesome Drawing Quiz」。
- 按一下「廣告單元」選單,然後按一下「新增廣告單元」,建立新的獎勵影片廣告單元。
- 選取「獎勵」廣告格式。

- 提供您偏好的廣告單元名稱。接著,將獎勵數量設為 1,獎勵項目設為「提示」 (這是應用程式目前提供給使用者的獎勵)。然後按一下「建立廣告單元」,建立新的獎勵影片廣告單元。

- 成功建立後,您會看到類似以下的說明。

- 返回 Unity 專案,將 AdMob 應用程式 ID 和廣告單元 ID 常數更新為上一個步驟中建立的常數。
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_ANDROID = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_ANDROID
private const string APP_ID = APP_ID_ANDROID;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
iOS 設定
如要在帳戶中建立新的 AdMob 應用程式,請按照下列操作說明進行:
- 前往 AdMob 控制台。
- 在「應用程式」選單中,按一下「新增應用程式」。
- 系統詢問「您在 Google Play 或 App Store 發布過應用程式嗎?」時,請回答「否」。
- 將應用程式命名為「Awesome Drawing Quiz」,選擇「iOS」做為平台,然後按一下「新增」。
在帳戶中建立 AdMob 應用程式後,請按照下列步驟建立新的獎勵影片廣告單元。
- 在 AdMob 前端按一下「應用程式」選單,然後從應用程式清單中選取「Awesome Drawing Quiz」。
- 按一下「廣告單元」選單,然後按一下「新增廣告單元」,建立新的獎勵影片廣告單元。
- 選取「獎勵」廣告格式。

- 提供您偏好的廣告單元名稱。接著,將獎勵數量設為 1,獎勵項目設為「提示」 (這是應用程式目前提供給使用者的獎勵)。然後按一下「建立廣告單元」,建立新的獎勵影片廣告單元。

- 成功建立後,您會看到類似以下的說明。

- 返回 Unity 專案,將 AdMob 應用程式 ID 和廣告單元 ID 常數更新為上一個步驟中建立的常數。
Ads/AdManager.cs
namespace AwesomeDrawingQuiz.Ads {
public class AdManager {
public const string APP_ID_IOS = "YOUR_ADMOB_APP_ID";
...
#elif UNITY_IOS
private const string APP_ID = APP_ID_IOS;
public const string AD_UNIT_ID = "<YOUR_AD_UNIT_ID>";
...
}
}
4. 新增 Google Mobile Ads Unity 外掛程式
匯入外掛程式
如要在 Unity 應用程式中放送 AdMob 廣告,您必須將 Google Mobile Ads Unity 外掛程式新增至專案。
- 下載 Google Mobile Ads Unity 外掛程式 3.18.1 套件。(請注意,本程式碼研究室可能與其他版本的外掛程式不相容)
- 在「Awesome Drawing Quiz」Unity 專案中。在專案中,依序前往「Assets」>「Import Package」>「Custom Package」。
- 將下載的 GoogleMobileAds.unitypackage 匯入專案。
設定 AdMob 應用程式 ID
在 Unity 編輯器中,依序選取選單中的「Assets」>「Google Mobile Ads」>「Settings」。

按一下「Google AdMob」部分下方的「已啟用」核取方塊,啟用 AdMob。然後輸入 AdMob 應用程式 ID,如下所示:
- Android:
ca-app-pub-3940256099942544~3048611032 - iOS:
ca-app-pub-3940256099942544~2753522596

5. 設定 Firebase 專案
透過 Firebase 控制台建立新專案
- 前往 Firebase 控制台。
- 選取「新增專案」,然後將專案命名為「Awesome Drawing Quiz」。
新增 Unity 應用程式
- 在新專案的總覽畫面中,按一下「將 Firebase 新增至您的 Unity 應用程式」。
- 勾選「註冊為 iOS 應用程式」核取方塊。
- 輸入 iOS 軟體包 ID,格式如下:com.codelab.awesomedrawingquiz.unity
- 提供應用程式暱稱,例如:Awesome Drawing Quiz (Unity on iOS)
- 勾選「註冊為 Android 應用程式」核取方塊。
- 輸入 Android 套件名稱:com.codelab.awesomedrawingquiz.unity
- 提供應用程式暱稱,例如:Awesome Drawing Quiz (Unity on Android)。
- 選取「註冊應用程式」,註冊 Android 和 iOS 應用程式。
將 Firebase 設定檔新增至 Unity 專案
接著,系統會顯示畫面,提示您下載設定檔,其中包含應用程式所需的所有 Firebase 中繼資料。請下載 google-service.json 和 GoogleService-Info.plist 檔案,然後將這兩個檔案移至 Unity 專案的
Assets 資料夾。

新增 Firebase Analytics SDK
- 下載 Firebase Unity SDK 5.5.0,並解壓縮至方便使用的位置。
- 開啟「Awesome Drawing Quiz」Unity 專案,然後依序前往「Assets」>「Import Package」>「Custom Package」。
- 從解壓縮的 SDK 匯入遠端設定 SDK (
dotnet4/FirebaseAnalytics.unitypackage)。 - 在「Import Unity package」視窗中,按一下「Import」。
6. 將 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 中提供使用。

7. 執行專案
編譯及執行專案後,應用程式啟動時會顯示下列畫面。

按一下「開始遊戲」後,畫面上會顯示一幅圖畫。你的任務是根據畫面頂端顯示的提示猜出圖案名稱,提示會顯示名稱的第一個字母和長度。

如果不知道該如何命名,可以點按「SKIP」(略過) 按鈕跳過關卡。
你可能需要額外提示來猜出答案。點選「提示」按鈕並觀看獎勵影片廣告,即可獲得額外提示。看完廣告後,系統會揭露一個額外字母做為獎勵。

8. 新增應用程式事件
如要深入瞭解「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 | 在遊戲中完成的關卡數 |
建立用於記錄自訂事件的輔助類別
為輕鬆記錄數據分析事件,您將建立輔助類別來管理自訂事件。
首先,請在 Assets/Scripts 資料夾下建立新資料夾,並命名為 Analytics。接著,在 Analytics 資料夾下建立新的 C# 指令碼,並命名為 QuizAnalytics.cs。
將下列程式碼新增至 QuizAnalytics.cs 檔案。
Analytics/QuizAnalytics.cs
using Firebase.Analytics;
namespace AwesomeDrawingQuiz.Analytics {
public class QuizAnalytics {
private const string EVENT_AD_REWARD_PROMPT = "ad_reward_prompt";
private const string EVENT_AD_REWARD_IMPRESSION = "ad_reward_impression";
private const string EVENT_LEVEL_FAIL = "level_fail";
private const string EVENT_LEVEL_SUCCESS = "level_success";
private const string EVENT_LEVEL_WRONG_ANSWER = "level_wrong_answer";
private const string EVENT_GAME_START = "game_start";
private const string EVENT_GAME_COMPLETE = "game_complete";
private const string PARAM_AD_UNIT_ID = "ad_unit_id";
private const string PARAM_ELAPSED_TIME_SEC = "elapsed_time_sec";
private const string PARAM_HINT_USED = "hint_used";
private const string PARAM_NUMBER_OF_ATTEMPTS = "number_of_attempts";
private const string PARAM_NUMBER_OF_CORRECT_ANSWERS = "number_of_correct_answers";
public const string SCREEN_MAIN = "main";
public const string SCREEN_GAME = "game";
public static void LogGameStart() {
FirebaseAnalytics.LogEvent(EVENT_GAME_START);
}
public static void LogLevelStart(string levelName) {
FirebaseAnalytics.LogEvent(FirebaseAnalytics.EventLevelStart,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogLevelWrongAnswer(string levelName) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_WRONG_ANSWER,
FirebaseAnalytics.ParameterLevelName, levelName);
}
public static void LogAdRewardPrompt(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_PROMPT, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogAdRewardImpression(string adUnitId) {
FirebaseAnalytics.LogEvent(EVENT_AD_REWARD_IMPRESSION, PARAM_AD_UNIT_ID, adUnitId);
}
public static void LogLevelSuccess(
string levelName, int numberOfAttemps, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_SUCCESS, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttemps),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogLevelFail(
string levelName, int numberOfAttempts, int elapsedTimeInSec, bool hintUsed
) {
FirebaseAnalytics.LogEvent(EVENT_LEVEL_FAIL, new Parameter[] {
new Parameter(FirebaseAnalytics.ParameterLevelName, levelName),
new Parameter(PARAM_NUMBER_OF_ATTEMPTS, numberOfAttempts),
new Parameter(PARAM_ELAPSED_TIME_SEC, elapsedTimeInSec),
new Parameter(PARAM_HINT_USED, hintUsed ? 1 : 0)
});
}
public static void LogGameComplete(int numberOfCorrectAnswers) {
FirebaseAnalytics.LogEvent(EVENT_GAME_COMPLETE,
PARAM_NUMBER_OF_CORRECT_ANSWERS, numberOfCorrectAnswers);
}
public static void SetScreenName(string screenName) {
FirebaseAnalytics.SetCurrentScreen(screenName, null);
}
}
}
在遊戲中記錄數據分析事件
開啟 Assets/Scripts/Scenes 資料夾下的 Game.cs 檔案。如要使用 QuizAnalytics 類別 (位於 AwesomeDrawingQuiz.Analytics 命名空間下方),請新增 using 指示,如下所示。
Scenes/Game.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
...
}
接著,在 Start() 函式中呼叫 QuizAnalytics.SetScreenName(),變更目前畫面的名稱。此外,請呼叫 QuizAnalytics.LogGameStart(),指出遊戲已開始。
Scenes/Game.cs
void Start () {
// TODO: Log screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_GAME);
...
SetHintButtonEnabled(false);
// TODO: Log game_start event (101)
QuizAnalytics.LogGameStart();
...
}
接著,在回呼函式中,新增自訂事件的記錄呼叫,如下所示:
Scenes/Game.cs
public void OnClickHint() {
// TODO: Log ad_reward_prompt event (101)
QuizAnalytics.LogAdRewardPrompt(AdManager.AD_UNIT_ID);
...
}
...
public void OnAdStarted(object sender, EventArgs args) {
// TODO: Log ad_reward_impression event (101)
QuizAnalytics.LogAdRewardImpression(AdManager.AD_UNIT_ID);
}
...
public void OnGameOver(object sender, GameOverEventArgs args) {
// TODO: Log game_complete event (101)
QuizAnalytics.LogGameComplete(args.NumCorrectAnswers);
...
}
public void OnLevelCleared(object sender, LevelClearEventArgs args) {
// TODO: Log level_success event (101)
QuizAnalytics.LogLevelSuccess(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
...
}
public void OnLevelSkipped(object sender, LevelSkipEventArgs args) {
// TODO: Log level_fail event (101)
QuizAnalytics.LogLevelFail(
args.Drawing.word, args.NumAttempts, args.ElapsedTimeInSeconds, args.IsHintUsed);
}
public void OnNewLevel(object sender, NewLevelEventArgs args) {
// TODO: Log level_start event (101)
QuizAnalytics.LogLevelStart(args.Drawing.word);
...
}
public void OnWrongAnwser(object sender, WrongAnswerEventArgs args) {
// TODO: Log level_wrong_answer event (101)
QuizAnalytics.LogLevelWrongAnswer(args.Drawing.word);
...
}
最後,更新 Assets/Scripts/Scenes 資料夾下的 Main.cs 檔案。在呼叫 Firebase SDK 中的任何方法之前,請先確認 Firebase 是否已準備就緒。
Scenes/Main.cs
using AwesomeDrawingQuiz.Ads;
// TODO: Import AwesomeDrawingQuiz.Analytics (101)
using AwesomeDrawingQuiz.Analytics;
...
namespace AwesomeDrawingQuiz.Scene {
public class Main : MonoBehaviour {
...
void Start () {
Screen.sleepTimeout = SleepTimeout.SystemSetting;
#if UNITY_ANDROID
// Disable 'Start a game' button until
// Firebase dependencies are ready to use on the Android
buttonStartGame.interactable = false;
// TODO: Check Google Play Services on Android (101)
// Check Google Play Services on Android device is up to date
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
var dependencyStatus = task.Result;
if (dependencyStatus == Firebase.DependencyStatus.Available) {
Debug.Log("All Firebase services are available");
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
} else {
throw new System.InvalidOperationException(System.String.Format(
"Could not resolve all Firebase dependencies: {0}", dependencyStatus));
}
}).ContinueWith(task => {
// Enable 'Start a game' button
UnityMainThreadDispatcher.Instance()
.Enqueue(() => buttonStartGame.interactable = true);
});
#else
// TODO: Set screen name (101)
QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);
#endif
}
...
}
}
9. 偵錯 Analytics 事件
您可以使用 DebugView 確認事件是否正確記錄。DebugView 可讓您近乎即時地查看應用程式在開發裝置上記錄的原始事件資料。
這項工具在開發階段的插碼程序中非常實用,可協助您找出 Analytics 導入作業中的錯誤。
在 Android 裝置上啟用偵錯模式
一般來說,應用程式記錄的事件會在大約一小時內分批上傳。如要即時驗證 Analytics 導入作業,請在開發裝置上啟用偵錯模式,以盡量減少延遲時間的方式上傳事件。
首先,請在 Android Studio 中開啟「終端機」工具。位於底部工具列。

然後執行下列指令 (請確認測試 Android 裝置已連上電腦,或 Android 模擬器正在執行):
adb shell setprop debug.firebase.analytics.app com.google.codelab.awesomedrawingquiz
偵錯模式會維持啟用狀態,直到您執行下列指令來明確停用偵錯模式為止:
adb shell setprop debug.firebase.analytics.app .none.
在 iOS 裝置上啟用偵錯模式
如要在開發裝置上啟用 Analytics 偵錯模式,請在 Xcode 中指定下列指令列引數:
-FIRDebugEnabled
偵錯模式會保持啟用狀態;如要停用偵錯模式,請指定下列指令列引數:
-FIRDebugDisabled
使用 DebugView 偵錯 Analytics 事件
在測試裝置上啟用偵錯模式後,請前往 Firebase 控制台,然後從選單中選取「DebugView」。接著在測試裝置上玩遊戲,即可查看系統記錄的事件,並顯示在 DebugView 報表中。

點選事件名稱,即可查看各個事件的詳細資訊。舉例來說,以下螢幕截圖顯示與 level_start 事件相關聯的參數詳細資料。

詳情請參閱 DebugView 說明中心文章。
10. 啟用參數回報功能
根據預設,Google Analytics for Firebase 會收集事件計數總數,但您必須為感興趣的每個事件參數明確啟用報表功能,才能查看自訂參數的報表。啟用後,Google Analytics for Firebase 會顯示額外資訊卡,顯示自訂參數的統計資料。
為事件登錄自訂參數的步驟如下:
- 前往 Firebase 控制台,然後選取先前建立的「Awesome Drawing Quiz」專案。
- 按一下導覽選單中的「活動」。
- 找出要修改的事件所在的列,然後按一下
>「編輯參數報表」。

- 在 [請輸入參數名稱] 欄位中,填入您要登錄的參數名稱。
注意:如果系統找不到相符項目,請輸入參數名稱,然後按一下「新增」。
5. 請參閱下表,並視情況將「類型」欄位設為「文字」或「數字」。如果是數字參數,請一併設定「測量單位」欄位。6. 按一下「儲存」按鈕,完成設定。
針對下列每個事件啟用參數報表。
事件名稱 | 參數名稱 | 參數類型 | 測量單位 |
level_start | level_name | 文字 | 不適用 |
level_wrong_answer | level_name | 文字 | 不適用 |
level_success | level_name | 文字 | 不適用 |
level_success | number_of_attempts | 數字 | 標準 |
level_success | elapsed_time_sec | 數字 | 秒 |
level_success | hint_used | 數字 | 標準 |
level_fail | level_name | 文字 | 不適用 |
level_fail | number_of_attempts | 數字 | 標準 |
level_fail | elapsed_time_sec | 數字 | 秒 |
level_fail | hint_used | 數字 | 標準 |
game_complete | number_of_correct_answers | 數字 | 標準 |
以下範例顯示 level_success 事件的自訂參數報表設定:

完成參數報表設定後,您就能查看與每個已啟用參數報表的事件相關聯的參數。

11. 從「事件」報表取得洞察資料
您已在遊戲中加入幾個事件,因此應該可以回答有關遊戲使用者行為的問題。以下列舉幾個可從 Firebase 事件報表取得的洞察資料。
哪個等級的錯誤答案最多?
如要回答這個問題,請找出每個層級觸發的 level_wrong_answer 事件數。
按一下事件報表中的 level_wrong_answer,在level_wrong_answer事件報表中,找出level_name資訊卡。您會在該資訊卡上看到與 level_name 參數相關聯的值,如下所示。

根據上方的螢幕截圖,您可以輕鬆找出「地平線」的錯誤答案數量最多,表示相較於其他等級,使用者覺得這個等級較難。
根據這裡的洞察資料,您可以決定不要為新手使用者提供困難的關卡,以維持高留存率。
平均需要嘗試幾次才能過關?
在「Awesome Drawing Quiz」中,使用者可以盡情提交各個等級的答案。
由於您已在 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,表示獎勵 (提示) 對使用者不夠吸引人。此外,您也錯失了透過獎勵影片廣告增加收益的機會。
因此,建議您提供對使用者更有幫助的獎勵,讓使用者更深入參與遊戲,並提高獎勵影片廣告的收益。
每場遊戲平均通過多少關卡?
在「Awesome Drawing Quiz」中,每款遊戲共有 6 個關卡。使用者完成六個關卡後 (不論是否過關),系統會觸發 game_complete 事件,並將 number_of_correct_answers 做為參數。
由於 number_of_correct_answers 表示使用者通過的關卡數 (提供正確答案),因此您可以查看 number_of_correct_answers 參數的指標來找出答案。
按一下事件報表中的 game_complete 事件。在 game_complete 事件報表中,找出 number_of_correct_answers 資訊卡。您會看到number_of_correct_answers事件參數的平均數量。

如果平均通關數太低,建議重新安排遊戲關卡,協助玩家通關,讓他們繼續玩遊戲,不會失去興趣。
12. 大功告成!
您已完成 AdMob + Firebase 101 Unity 程式碼研究室。您可以在
101-complete_and_102-base 資料夾中找到本程式碼研究室的完整程式碼。
在 AdMob + Firebase 程式碼研究室的下一部分,您將瞭解如何使用漏斗圖,以視覺化方式呈現應用程式事件流程。此外,本課程也會說明如何使用遠端設定和 A/B 測試,在不更新應用程式的情況下,最佳化遊戲中的參數值。