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 Emulator,且系統映像檔支援 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」做為「平台」,然後按一下「Add」。
在帳戶中建立 AdMob 應用程式後,請按照下方步驟建立新的獎勵影片廣告單元。
- 在 AdMob 前端按一下 [應用程式] 選單,然後從應用程式清單中選取「超棒繪圖測驗」。
- 按一下「廣告單元」選單,然後按一下「新增廣告單元」建立新的獎勵影片廣告單元。
- 針對廣告格式選取「獎勵廣告」。
- 視需要提供廣告單元名稱。接著將獎勵數量設為 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 前端按一下 [應用程式] 選單,然後從應用程式清單中選取「超棒繪圖測驗」。
- 按一下「廣告單元」選單,然後按一下「新增廣告單元」建立新的獎勵影片廣告單元。
- 針對廣告格式選取「獎勵廣告」。
- 視需要提供廣告單元名稱。接著將獎勵數量設為 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 行動廣告 Unity 外掛程式
匯入外掛程式
若要在 Unity 應用程式上放送 AdMob 廣告,您必須在專案中加入 Google 行動廣告 Unity 外掛程式。
- 下載 Google Mobile Ads Unity 外掛程式 3.18.1 套件。(請注意,本程式碼研究室與其他版本的外掛程式可能不相容)。
- 在 Awesome Drawing Quiz Unity 專案中。在專案中,前往「Assets」(資產) >匯入套件 >自訂套件:
- 將 GoogleMobileAds.unitypackage 匯入您下載的專案。
設定 AdMob 應用程式 ID
在 Unity 編輯器中,依序選取「Assets」(資產) >「Google 行動廣告 >選單中的「設定」。
按一下「Google AdMob」部分底下的 [啟用] 核取方塊,啟用 AdMob。然後輸入 AdMob 應用程式 ID,如下所示:
- Android:
ca-app-pub-3940256099942544~3048611032
- iOS:
ca-app-pub-3940256099942544~2753522596
5. 設定 Firebase 專案
透過 Firebase 控制台建立新專案
- 前往 Firebase 控制台。
- 選取「Add Project」,然後將專案命名為「Awesome Drawing Quiz」。
新增 Unity 應用程式
- 在新專案的總覽畫面中,按一下「Add Firebase to your Unity app」。
- 勾選 [註冊為 iOS 應用程式] 核取方塊。
- 輸入 iOS 軟體包 ID:com.codelab.awesomedrawingquiz.unity
- 提供應用程式暱稱:Awesome Drawing Quiz (Unity 版 Unity)
- 勾選「註冊為 Android 應用程式」核取方塊。
- 將 Android 套件名稱輸入如下:com.codelab.awesomedrawingquiz.unity
- 提供應用程式暱稱:Awesome Drawing Quiz (Unity 版 Android)
- 選取「Register App」即可註冊 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」Assets >匯入套件 >自訂套件:
- 從已解壓縮的 SDK 中匯入遠端設定 SDK (
dotnet4/FirebaseAnalytics.unitypackage
)。 - 在「Import Unity package」(匯入 Unity 套件) 視窗中,按一下「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」按鈕跳過一個等級。
您可能會需要其他線索,以便猜出答案。只要按一下「HINT」按鈕並觀看獎勵影片廣告,就能獲得額外線索。使用者看完廣告後,系統會顯示一個額外信函做為獎勵。
8. 新增應用程式事件
在「超級繪圖測驗」中深入瞭解使用者歷程,您可以定義一些自訂事件來追蹤使用者在遊戲中的行為,如下所示:
事件名稱 | 已觸發... | 參數 |
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
。接著建立新的 C# 指令碼,並在 Analytics
資料夾內將其命名為 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
檔案。如要使用位於 AwesomeDrawingQuiz.Analytics
命名空間下方的 QuizAnalytics
類別,請新增 use 指令,如下所示。
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. 偵錯數據分析事件
您可以使用 DebugView 來驗證事件是否正確記錄。DebugView 可讓您以近乎即時的方式,在開發裝置上查看應用程式記錄的原始事件資料。
在開發的檢測階段進行驗證,這非常實用,可以幫助您找出分析實作方面的錯誤和錯誤。
在 Android 上啟用偵錯模式
一般來說,系統大約會在一小時內以批次方式將應用程式記錄事件記錄下來,然後一起上傳。如要即時驗證數據分析導入作業,必須在開發裝置上啟用偵錯模式,以盡可能縮短延遲時間。
首先,在 Android Studio 中開啟終端機工具。位於底部的工具列中。
接著執行下列指令 (確認測試 Android 裝置已連線至電腦或 Android Emulator 正在執行):
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 測驗 中,使用者可以視需要提交每個關卡的答案。
由於您已在 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 個關卡。使用者完成六個關卡後 (無論每個關卡清除或失敗),都會以 number_of_correct_answers
做為參數觸發 game_complete
事件。
由於 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 測試,在不更新應用程式的情況下最佳化遊戲的參數值。