AdMob+Firebase 102 Unity:不更新應用程式即可調整應用程式行為

1. 簡介

假設您在 Play 商店發布應用程式後,需要調整應用程式中某些參數值。一般來說,您應該重新發布新版應用程式,而且使用者應該在手機上更新應用程式。

一般來說,如果您想對應用程式做出長期變更,應用程式更新就能正常運作。不過,如果您打算經常調整應用程式中某些參數的值,該怎麼做?或者,您可以做些實驗,找出最理想的應用程式設定?

在這些情況下,應用程式更新會無法正常運作。因為更新全面生效需要一段時間才會全面生效。此外,針對多個應用程式版本進行實驗也相當困難。

此外,如何判斷應用程式的使用者歷程是否正常運作?建議您仰賴 Play 管理中心的使用者留言。不過,這可能不足以做出明確的決定。

課程內容

  • 如何在 Google Analytics for Firebase 中建立漏斗
  • 如何使用 Firebase 遠端設定
  • 如何執行 Firebase A/B 測試

軟硬體需求

  • 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

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

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

準備必要檔案

Awesome Drawing Quiz 會用到幾個開放原始碼程式碼來編譯及執行專案。

開啟終端機,然後移至存放區根目錄。接著,從終端機執行 ./gradlew :prepareThirdPartyFiles (Windows 上的 gradlew.bat :prepareThirdPartyFiles),將必要檔案複製到專案內。

匯入範例應用程式

啟動 Unity,在歡迎畫面中選擇「Open」。然後從您下載的程式碼中選取 101-complete_and_102-base 目錄。

現在,您應該已在 Unity 中開啟專案。

加入 Google 行動廣告 Unity 外掛程式

若要在 Unity 應用程式上放送 AdMob 廣告,您必須在專案中加入 Google 行動廣告 Unity 外掛程式。

  1. 下載 Google Mobile Ads Unity 外掛程式 3.18.1 套件。(請注意,本程式碼研究室與其他版本的外掛程式可能不相容)。
  2. Awesome Drawing Quiz Unity 專案中。在專案中,前往「Assets」(資產) >匯入套件 >自訂套件
  3. GoogleMobileAds.unitypackage 匯入您下載的專案。

您還需要設定 AdMob 應用程式 ID。在 Unity 編輯器中,依序選取「Assets」(資產) >「Google 行動廣告 >選單中的「設定」

44fc84fe88235c1f.png

按一下「Google AdMob」部分底下的 [啟用] 核取方塊,啟用 AdMob。然後輸入 AdMob 應用程式 ID,如下所示:

  • Android:ca-app-pub-3940256099942544~3048611032
  • iOS:ca-app-pub-3940256099942544~2753522596

a6ad7402d4daf330.png

將 Firebase 設定檔加入 Unity 專案

  1. 在「Awesome Drawing Quiz」專案的總覽畫面中,按一下「Settings」圖示。9bacb5ada7cbaaf6.png
  2. 在「General」分頁中,選取各個 Android 和 iOS 應用程式,即可下載 google-service.json (Android 裝置) 和 GoogleService-Info.plist (適用於 iOS) 檔案。
  3. 將這兩個設定檔移至 Unity 專案中的 android_studio_folder.pngAssets 資料夾。

704aa8e97df63c4e.png

加入 Firebase Analytics SDK

  1. 下載 Firebase Unity SDK 5.5.0,然後將檔案解壓縮並方便使用。(如果您已下載 SDK,請略過這個步驟)
  2. 開啟 Awesome Drawing Quiz Unity 專案,前往「Assets」Assets >匯入套件 >自訂套件
  3. 在已解壓縮的 SDK 中匯入 Firebase Analytics SDK (dotnet4/FirebaseAnalytics.unitypackage)。
  4. 在「Import Unity package」(匯入 Unity 套件) 視窗中,按一下「Import」

3. 從控制台開啟 Firebase 專案

在進行下一個步驟前,請先從 Firebase 控制台開啟您在 AdMob + Firebase 指南設定 Firebase 專案」步驟中建立的專案。

e0a028059c9e00cb.png

4. 建立應用程式事件漏斗

我們可能會添加了幾個應用程式事件,用來追蹤應用程式內的使用者活動。閱讀每個應用程式事件的報表,即可瞭解與事件相關的詳細資料,例如總數、每位使用者的平均計數和客層等等。

不過,如果您想查看一系列活動的完成率,而非關注特定事件,該怎麼辦?在 Google Analytics for Firebase 中,您可以使用漏斗,以視覺元素呈現一系列應用程式事件的完成率並進行最佳化。

建立漏斗

如要建立程序,請按照下列步驟執行:

  1. 前往 Firebase 控制台,然後選取先前建立的 Awesome Drawing Quiz 專案。
  2. 按一下「程序」
  3. 按一下 [新增程序]
  4. 輸入程序的名稱和說明。
  5. 選取要做為程序中步驟的前兩個事件。
  6. 如要新增更多步驟,請按一下 [新增其他事件],然後選取某個事件。
  7. 按一下 [建立]

按照上述步驟建立下列程序:

#1 漏斗名稱:等級成功率 事件:level_startlevel_successd3bc78ef61a261d7.png

#2 漏斗名稱:獎勵廣告完成率事件:ad_reward_promptad_reward_impressionad_reward45c9542dfa663014.png

#3 漏斗名稱:遊戲完成率事件:game_startgame_completedab25e8501746d5f.png

查看漏斗分析

建立一些漏斗後,您可以在 Firebase 控制台的「漏斗」選單中找到這些漏斗。只要按一下清單中的漏斗名稱,即可查看每個漏斗的詳細分析。

620c0e84587c8ad4.png

例如按一下「等級成功率」。顯示漏斗詳細資料如下:

c889f9b6ece15847.png

在上方的螢幕截圖中,您可以查看在啟動關卡 (觸發 level_start 事件) 後清除關卡 (觸發 level_success 事件) 的使用者百分比。這裡可以看到 46.2% 的使用者已清除過這個等級。

按一下「事件計數」後,畫面上會根據事件數量顯示指標,如下所示:

d044fb7b07e6e0d9.png

根據上方螢幕截圖的指標,在該期間內共有 116 次嘗試 (觸發 level_start 事件) 和 57 次清除 (觸發 level_success 事件)。

由於以事件計算的完成率 (49.1%) 略高於根據使用者計算的 46.2% 比率,因此你可以推斷,其中有些人的成效優於其他事件。

5. 將遠端設定整合至應用程式

由於您可以針對應用程式事件和漏斗取得一些深入分析資訊,因此建議您將應用程式最佳化。通常包括微調應用程式中的參數值。若要修改這些參數值,您必須更新應用程式,以便為使用者套用變更。

只要使用 Firebase 中的遠端設定功能,你不必更新應用程式就能調整這些值。也就是說,你可以變更應用程式行為,不必強迫使用者下載更新程式,

在本程式碼研究室中,您將瞭解如何使用遠端設定,在不更新應用程式的情況下調整獎勵數量 (觀看獎勵影片廣告後要揭露的字母數)。

新增 Firebase 遠端設定 SDK

  1. 下載 Firebase Unity SDK 5.5.0,然後將檔案解壓縮並方便使用。
  2. 開啟 Awesome Drawing Quiz Unity 專案,前往「Assets」Assets >匯入套件 >自訂套件
  3. 從已解壓縮的 SDK 中匯入遠端設定 SDK (dotnet4/FirebaseRemoteConfig.unitypackage)。
  4. 在「Import Unity package」(匯入 Unity 套件) 視窗中,按一下「Import」

匯入 Firebase.RemoteConfig

修改 Main.cs 後,不必使用完整名稱,就能使用 Firebase.RemoteConfig 中的類型。

Scenes/Main.cs

...

using AwesomeDrawingQuiz.Game;

// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;

namespace AwesomeDrawingQuiz.Scene {
    ...
}

初始化與擷取遠端設定值

修改 Main.cs 中的 InitAndFetchRemoteConfig() 方法,初始化遠端設定執行個體,如下所示。請注意,GameSettings.KEY_REWARD_AMOUNT 會保留遠端設定中的參數名稱。(本程式碼研究室很快就會宣告這個欄位)

Scenes/Main.cs

private Task InitAndFetchRemoteConfig() {
    // TODO: Initialize and Fetch values from the Remote Config (102)
    Dictionary<string, object> defaults = new Dictionary<string, object>();
    defaults.Add(GameSettings.KEY_REWARD_AMOUNT, 1);
    FirebaseRemoteConfig.SetDefaults(defaults);

    if (Debug.isDebugBuild) {
        ConfigSettings config = new ConfigSettings();
        config.IsDeveloperMode = true;
        FirebaseRemoteConfig.Settings = config;
        return FirebaseRemoteConfig.FetchAsync(System.TimeSpan.Zero);
    } else {
        return FirebaseRemoteConfig.FetchAsync();
    }
}

您將會看到 FirebaseRemoteConfig 執行個體已設為在偵錯模式中從伺服器擷取最新值,協助開發程序。(IsDeveloperMode = trueFetchAsync(System.TimeSpan.Zero))

啟用擷取的遠端設定值

成功擷取遠端設定值後,您應該啟用這些值,才能在應用程式中使用。請按照下列方式修改 ActivateRemoteConfigValues() 方法。

Scenes/Main.cs

private void ActivateRemoteConfigValues() {
    // TODO: Activate fetched Remote Config values (102)
    FirebaseRemoteConfig.ActivateFetched();
}

修改 Start() 方法

如要讓應用程式擷取在應用程式啟動時啟用遠端設定值,請按照下列步驟修改 Main.cs 檔案中的 Start() 方法。

Scenes/Main.cs

void Start () {
    ...
    Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
        ...
    }).ContinueWith(task => { 
        // TODO: Call InitAndFetchRemoteConfig() (102)
        InitAndFetchRemoteConfig();
    }).ContinueWith(task => {
        // TODO: Call ActivateRemoteConfigValues() (102)
        ActivateRemoteConfigValues();

        // Enable 'Start a game' button
        UnityMainThreadDispatcher.Instance()
            .Enqueue(() => buttonStartGame.interactable = true);
    });
    #else
    QuizAnalytics.SetScreenName(QuizAnalytics.SCREEN_MAIN);

    // TODO: Call InitAndFetchRemoteConfig() (102)
    InitAndFetchRemoteConfig().ContinueWith(task => {
        // TODO: Call ActivateRemoteConfigValues() (102)
        ActivateRemoteConfigValues();
    });
    #endif
}

透過遠端設定擷取獎勵金額

修改 GameSettings 類別,從遠端設定擷取獎勵金額。

Game/GameSettings.cs

// TODO: Import Firebase.RemoteConfig (102)
using Firebase.RemoteConfig;

namespace AwesomeDrawingQuiz.Game {
    public class GameSettings {

        ...
        
        // TODO: Apply reward amount from the Remote Config (102)
        public const string KEY_REWARD_AMOUNT = "reward_amount";

        public static GameSettings Instance {
            get {
                return instance;
            }
        }

        ...

        public int RewardAmount {
            get {
                // TODO: Apply reward amount from the Remote Config (102)
                return (int) FirebaseRemoteConfig.GetValue(KEY_REWARD_AMOUNT).LongValue;
            }
            private set { }
        }
    }
}

透過控制台建立遠端設定參數

接下來,您將為獎勵金額建立新的遠端設定參數,以便隨時調整獎勵金額。

如要建立新參數,請前往 Firebase 控制台,然後選取先前建立的 Awesome Drawing Quiz 專案。按一下 [遠端設定] ->。「加入第一個參數」按鈕。

7f52617141c53726.png

將參數命名為 reward_amount,並將預設值設為 1。然後按一下「Add Parameter」按鈕。

cbc771fd1685b29c.png

按一下「發布變更」按鈕,讓使用者瞭解變更生效。

d6a6aa4a60e06ee9.png

6. 透過遠端設定變更應用程式行為

您現在可在 Firebase 主控台設定 Awesome Drawing Quiz 中的獎勵數量,而不必更新應用程式的程式碼。

在本章節中,您將將獎勵數量從 1 變更為 2,讓應用程式在觀看獎勵廣告後,再顯示兩個角色做為提示。

更新 Rewards_amount 參數的預設值

前往 Firebase 控制台,然後選取先前建立的 Awesome Drawing Quiz 專案。按一下「Remote Config」,然後在清單中按一下 reward_amount。接著,將預設值改為 2,然後按一下「Update」按鈕。

9a9bd8a26a39bfe3.png

按一下「發布變更」按鈕,讓使用者瞭解變更生效。

d6a6aa4a60e06ee9.png

驗證應用程式行為變更

如要確認應用程式的行為變更,請再次執行專案。看完獎勵廣告後,您會發現應用程式顯示兩個字母做為獎勵 (如同遠端設定主控台中的設定)。

觀看獎勵廣告前

提供兩個額外字母做為獎勵

7. 建立實驗來最佳化獎勵金額

現在您不必發布應用程式更新就能變更獎勵數量。不過,如何判斷所做的變更是否適合應用程式?

透過 Firebase A/B 測試,您不需更新應用程式或建構獨立的工具,就能執行及追蹤每項實驗的成效,進而改善應用程式的整體使用者體驗。

設計實驗

建立新實驗之前,您應設定明確的實驗目標。建立新實驗前,請務必先詳閱下列檢查清單。

  • 哪個部分:您想要最佳化?(例如遊戲難度、廣告出現時間/能見度等)?
  • 原因:進行實驗的業務目標為何?(例如提高廣告收益、增加留存率等)。
  • 哪些人:參與實驗的對象(例如:「所有使用者」、「特定使用者目標對象」等)

在本程式碼研究室中,您將建立實驗來最佳化獎勵金額價值,提高超棒繪圖測驗的每日使用者參與度。

建立實驗

Firebase 控制台開啟 Awesome Drawing Quiz 專案。選取「A/B 測試」選單,然後點選「建立實驗」按鈕。

選取遠端設定建立遠端設定實驗。

f38a85328ab54e7e.png

將實驗命名為「獎勵金額」,如下方螢幕截圖所示。

15d552adb61c0b08.png

設定指定目標選項。在本程式碼研究室中,您將針對「Awesome Drawing 測驗」中的所有使用者指定目標 (100%)。

61b316741a63050f.png

由於實驗的主要目標在於找出盡可能提高每日使用者參與度的理想價值,因此請選取「每日使用者參與度」做為要追蹤的主要指標。

694641b57d90ff65.png

最後,請設定控制組和變化版本群組,瞭解哪個群組的成效較佳。從控制組中選取 reward_amount,並將值保持不變。然後將變化版本群組命名為「減少獎勵」,然後將 reward_amount 的值變更為 1。

10ed7f5b06858519.png

採用這項設定後,「較少獎勵」群組的使用者會收到「1 個字母」的獎勵,而控制組中的成員則會收到兩個字母的獎勵。因此,您將看到獎勵對使用者的影響。

按下「查看」按鈕後,畫面就會顯示實驗總覽,如下所示。

ae6477ce79f6265d.png

執行實驗

按一下「開始實驗」按鈕即可執行實驗。請注意,實驗開始後就無法更改。

7131bf9b4fa74fa5.png

8. 管理實驗

查看實驗進度

您可以在 Firebase 控制台的「A/B 測試」選單中查看實驗進度,如以下螢幕截圖所示。請注意,資訊卡也會顯示最近 30 分鐘參與實驗的使用者人數。

8a7009bdd8871d95.png

點選清單中的實驗後,即可查看實驗詳細資料。在實驗宣告勝出版本 (例如成效最佳的變化版本) 之前,系統會顯示「宣告勝出版本太早」訊息。

a4e7ca3e3f4711cd.png

實驗執行一段時間後,「改善總覽」部分下方就會開始顯示實驗期間收集到的資料。您可以比較每個變化版本的成效,看看哪個版本的成效較佳。以下螢幕截圖是「改善項目總覽」部分的範例。

e2d00fc27c053fd3.png

您可以在「改善總覽」部分下方的表格中,查看實驗目標指標的詳細資料,以及實驗中追蹤的其他指標。以下螢幕截圖是指標詳細資料區段的範例。

c3859d642f85cc52.png

向所有使用者發布這個主管

實驗持續執行,找出成效最佳的版本或勝出版本後,即可向所有使用者套用實驗設定。A/B 測試找出明顯勝出的變化版本後,建議您向所有使用者推出成效最佳的版本。

86cb6a6c07516634.png

不過,即使實驗未宣告明顯勝出的變化版本,您還是可以選擇向所有使用者推出變化版本。

在實驗詳細資料畫面上,依序按一下內容選單 ( 73afe611adf58774.png) 和「推出變化版本」

374e1c72be1d0656.png

選取要向所有使用者推出的變化版本,然後按一下「在遠端設定中查看」按鈕查看變更,再透過遠端設定進行變更。

e176f6e6a72c754.png

確認草稿沒有任何問題後,請按一下「發布變更」按鈕,對所有使用者生效。

d65d545620ce93f6.png

9. 全部完成!

您已完成 AdMob + Firebase 102 Unity 程式碼研究室。您可以在 android_studio_folder.png102-complete 資料夾中找到本程式碼研究室完成的程式碼。