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

1. 簡介

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

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

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

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

進行本程式碼研究室時,如果你遇到任何問題 (例如程式碼錯誤、文法錯誤或用詞不明確等),請透過程式碼研究室左下角的「回報錯誤」連結回報問題。

課程內容

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

軟硬體需求

  • Android Studio 4.1 以上版本
  • Google 帳戶
  • 搭載 Android 5.0 以上版本的測試裝置 (使用 USB 傳輸線連接裝置或執行 AVD (Android 虛擬裝置) 的 Android Emulator,且系統映像檔支援 Play 商店/Google API)

您對 AdMob 使用體驗的評價如何?

新手 中級 還算容易

你對 Firebase 的使用體驗有何評價?

新手 中級 還算容易

2. 設定開發環境

下載程式碼

點選下方按鈕,即可下載這個程式碼研究室的所有程式碼:

將下載的 ZIP 檔案解壓縮。這會將根資料夾解壓縮,並命名為 admob-firebase-codelabs-android-master

...或透過指令列複製 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-complete_and_102-base 目錄。

現在 Android Studio 應已開啟專案。

將 Firebase 設定檔新增至 Android 專案

  1. 在「Awesome Drawing Quiz」專案的總覽畫面中,按一下「Settings」圖示。9bacb5ada7cbaaf6.png
  2. 在「General」分頁中,選取要下載 google-service.json 檔案的 Android 應用程式。
  3. 將設定檔移至專案的 android_studio_folder.pngapp 目錄。797cde1881a38fdf.png

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 遠端設定新增至應用程式依附元件。

app/build.gradle

apply plugin: 'com.android.application'

android {
    ...
}

dependencies {
    ...

    // TODO: Add Firebase Remote Config dependency (102)
    implementation 'com.google.firebase:firebase-config-ktx'

    ...
}

...

將專案與 Gradle 檔案同步處理

為確保應用程式能夠使用所有依附元件,請將專案與 Gradle 檔案同步處理。選取「檔案」>將專案與 Gradle 檔案同步處理選單,將專案與 Gradle 檔案同步處理。

設定遠端設定參數的預設值

需要網路連線才能從遠端設定擷取值。在無法使用網路的情況下,請為每個遠端設定參數定義預設值。

res/xml 資料夾下建立 remote_config_defaults.xml 檔案。接著設定獎勵金額的預設值 (reward_amount),如下所示)。

res/xml/remote_config_defaults.xml

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
    <entry>
        <key>reward_amount</key>
        <value>1</value>
    </entry>
</defaultsMap>

請注意,reward_amount 是遠端設定中的參數名稱。

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

修改 AwesomeDrawingQuiz.kt,讓 GameSettings 類別保留 RemoteConfig 例項的參照。

請注意,RemoteConfig 執行個體已設為在偵錯模式中從伺服器擷取最新值,協助開發程序。(請呼叫 fetch(0L),將擷取間隔下限設為零秒)

AwesomeDrawingQuiz.kt

class AwesomeDrawingQuiz : Application() {

    ...

    // COMPLETE: Provide FirebaseRemoteConfig instance (102)
    private fun provideGameSettings() = GameSettings(provideRemoteConfig())

    // COMPLETE: Add a function that provides a FirebaseRemoteConfig instance (102)
    private fun provideRemoteConfig(): FirebaseRemoteConfig {
        val rc = Firebase.remoteConfig.apply {
            setDefaultsAsync(R.xml.remote_config_defaults)
        }
        val fetchTask = if (BuildConfig.DEBUG) rc.fetch(0L) else rc.fetch()
        fetchTask.addOnCompleteListener {
            if (it.isSuccessful) {
                Log.d("AwesomeDrawingQuiz", "Remote config value fetched")
                rc.activate()
            }
        }
        return rc
    }
}

接著,請變更 GameSettings 類別,從遠端設定擷取獎勵金額。

GameSettings.kt

// TODO: Add FirebaseRemoteConfig as a class member
class GameSettings(private val rc: FirebaseRemoteConfig) {

  ...

  // TODO: Apply reward amount from the Remote Config (102)
  val rewardAmount: Int
    get() = rc.getLong(KEY_REWARD_AMOUNT).toInt()

  companion object {
    ...

    // TODO: Add a key for 'reward_amount' Remote Config parameter (102)
    private const val KEY_REWARD_AMOUNT = "reward_amount"
  }
}

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

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

如要建立新參數,請前往 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 Android 程式碼研究室。您可以在 android_studio_folder.png102-complete 資料夾中找到本程式碼研究室完成的程式碼。