1. 简介
假设您需要在 Play 商店中发布应用后调整应用中某些参数的值。通常,您应重新发布新版应用,并且用户也应在手机上更新应用。
一般来说,如果您想对应用进行持久性更改,应用更新会很有用。不过,如果您要经常调整应用中某些形参的值,该怎么办?或者,如果您想运行一些实验来找到最佳应用配置,该怎么办?
在这些情况下,应用更新将无法正常运行。因为更新需要一些时间才能完全传播给用户。此外,跨多个应用版本运行实验也相当具有挑战性。
此外,您如何确定应用的用户历程是否按预期运行?您可以参考 Play 管理中心内的用户评论。不过,它可能不够精确,无法做出明确的决定。
如果在此 Codelab 操作期间遇到任何问题(代码错误、语法错误、措辞含义不明等),都可以通过 Codelab 左下角的报告错误链接报告相应问题。
学习内容
- 如何在 Google Analytics for Firebase 中创建漏斗
- 如何使用 Firebase Remote Config
- 如何运行 Firebase A/B 测试
所需条件
- Android Studio 4.1 或更高版本
- Google 账号
- 搭载 Android 5.0 或更高版本的测试设备,以及用于连接设备的 USB 线;或者运行 AVD(Android 虚拟设备)的 Android 模拟器,且该模拟器具有支持 Play 商店/Google API 的系统映像
您如何评价自己在 AdMob 方面的经验水平?
您如何评价自己在 Firebase 方面的经验水平?
2. 设置开发环境
下载代码
点击以下按钮可下载本 Codelab 的所有代码:
解压下载的 ZIP 文件。此操作将解压缩名为 admob-firebase-codelabs-android-master 的根文件夹。
…或从命令行克隆 GitHub 代码库。
$ git clone https://github.com/googlecodelabs/admob-firebase-codelabs-android
该代码库包含以下四个文件夹:
101-base - 您在此 Codelab 中用作基础的起始代码。
101-complete_and_102-base - 此 Codelab 完成后的代码以及 102 Codelab 的起始代码。
102-complete - 102 Codelab 完成后的代码。
导入起始应用
启动 Android Studio,然后在欢迎界面中选择“导入项目”。然后,从下载的代码中选择 101-complete_and_102-base 目录。
现在,您应该已在 Android Studio 中打开该项目。
将 Firebase 配置文件添加到 Android 项目
- 在 Awesome Drawing Quiz 项目的概览界面中,点击“设置”图标。

- 在常规标签页下,选择要下载 google-service.json 文件的 Android 应用。
- 将配置文件移至项目中的
app 目录中。
3. 在控制台中打开 Firebase 项目
在继续执行下一步之前,请从 Firebase 控制台中打开您在 AdMob+Firebase 101 Codelab 的“设置 Firebase 项目”步骤中创建的项目。

4. 创建应用事件漏斗图
您可能添加了一些应用事件来跟踪应用内的用户活动。通过读取每个应用事件的报告,您可以获取与该事件关联的详细信息,例如总次数、每位用户的平均次数、受众特征等。
不过,如果您想查看一系列事件的完成率,而不是专注于特定事件,该怎么办?在 Google Analytics for Firebase 中,您可以使用漏斗来直观呈现并优化一系列应用事件的完成率。
创建漏斗
要创建渠道,请执行以下操作:
- 前往 Firebase 控制台,然后选择您之前创建的 Awesome Drawing Quiz 项目。
- 点击漏斗。
- 点击新建渠道。
- 输入渠道名称和说明。
- 选择要在渠道中用作步骤的前两个事件。
- 点击添加其他事件以添加更多步骤,然后选择相应事件。
- 点击创建。
按照上述步骤创建以下漏斗:
#1 漏斗名称:级别成功率事件:level_start、level_success
#2 漏斗名称:激励广告完成率事件:ad_reward_prompt、ad_reward_impression、ad_reward
#3 漏斗名称:游戏完成率 事件:game_start、game_complete
查看漏斗分析
创建一些漏斗后,您可以在 Firebase 控制台的漏斗菜单中访问它们。点击列表中的漏斗名称,即可查看每个漏斗的详细分析。

例如,点击关卡成功率。系统会显示如下所示的漏斗详细信息:

从上面的屏幕截图中,您可以看到在开始关卡(触发 level_start 事件)后通关(触发 level_success 事件)的用户百分比。在此处,您可以看到 46.2% 的用户已通关。
点击事件数后,系统会显示基于事件数量的指标,如下所示:

根据上图中的指标,在相应时间段内,有 116 次尝试(触发了 level_start 事件)和 57 次通关(触发了 level_success 事件)。
由于基于事件的完成率(49.1%) 略高于基于用户的完成率(46.2%),因此可以说,有少数人的表现优于其他人。
5. 将 Remote Config 集成到应用中
由于您可以根据应用事件和漏斗图获取一些有关应用的分析洞见,因此您可能需要优化应用。这通常包括对应用中的参数值进行微调。如需修改这些参数的值,您需要更新应用,以便将更改应用于用户。
通过使用 Firebase 中的 Remote Config,您无需更新应用即可调整这些值,这意味着您无需强制用户下载更新,即可更改应用行为,从而避免打扰用户。
在此 Codelab 中,您将学习如何使用 Remote Config 使奖励金额(观看激励视频广告后要公开的字母数)可调整,而无需更新应用。
将 Remote Config 添加到应用依赖项
我们先将 Firebase Remote Config 添加到应用依赖项中。
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 文件同步。选择 File > Sync Project with Gradle Files 菜单,以将项目与 Gradle 文件同步。
设置 Remote Config 参数的默认值
从 Remote Config 中提取值需要网络连接。如果网络不可用,您应为每个 Remote Config 参数定义一个默认值。
在 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 是 Remote Config 中参数的名称。
从 Remote Config 中提取奖励金额
修改 AwesomeDrawingQuiz.kt,使 GameSettings 类能够保存对 RemoteConfig 实例的引用。
请注意,RemoteConfig 实例已配置为在调试模式下从服务器提取最新值,以帮助完成开发流程。(通过调用 fetch(0L) 将最小提取间隔设置为 0 秒)
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 类以从 Remote Config 中提取奖励金额。
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"
}
}
通过控制台创建 Remote Config 参数
接下来,您将为奖励金额创建一个新的 Remote Config 参数,以便随时调整其值。
如需创建新形参,请前往 Firebase 控制台,然后选择您之前创建的 Awesome Drawing Quiz 项目。点击 Remote Config -> 添加您的首个参数按钮。

将形参命名为 reward_amount,并将其默认值设置为 1。然后,点击添加参数按钮。

点击发布更改按钮,以向用户发布更改。

6. 使用 Remote Config 更改应用行为
现在,您可以在 Firebase 控制台中配置超棒的绘画测验中的奖励金额,而无需更新应用代码。
在本部分中,您将把奖励金额从 1 更改为 2,以便应用在观看激励广告后显示另外两个字符作为提示。
更新 reward_amount 参数的默认值
前往 Firebase 控制台,然后选择您之前创建的 Awesome Drawing Quiz 项目。点击 Remote Config,然后点击列表中的 reward_amount。接下来,将默认值更改为 2,然后点击更新按钮。

点击发布更改按钮,向用户发布更改。

验证应用行为变更
如需确认应用行为变更,请再次运行项目。看完激励广告后,您会发现应用现在会显示两个字母作为奖励,这是我们在 Remote Config 控制台中配置的。
观看激励广告之前 | 奖励:揭示两个额外的字母 |
7. 创建实验以优化奖励金额
现在,您无需发布应用更新即可更改奖励金额。不过,如何确定更改量对应用有益?
借助 Firebase A/B Testing,您可以运行实验来优化应用的整体用户体验,而无需更新应用或构建单独的工具来运行和跟踪每个实验的效果。
设计实验
在创建新实验之前,您应先为实验设定明确的目标。在创建新实验之前,请务必检查以下清单。
- 内容:您要优化什么?(例如,游戏难度、广告展示时间/可见性等)
- 原因:您运行实验的业务目标是什么?(例如,最大限度地提高广告收入、提高用户留存率等)
- Who:谁可以参与实验?(例如,所有用户、特定用户受众群体等)
在此 Codelab 中,您将创建一个实验来优化奖励金额值,以最大限度地提高 Awesome Drawing Quiz 的每日用户互动度。
创建实验
在 Firebase 控制台中打开“Awesome Drawing Quiz”项目。选择 A/B 测试菜单,然后点击创建实验按钮。
选择 Remote Config 以创建 Remote Config 实验。

将实验命名为“奖励金额”,如以下屏幕截图所示。

配置定位选项。在此 Codelab 中,您将面向 Awesome Drawing Quiz 的所有用户。

由于实验的主要目标是找到可最大限度提高每日用户互动的最佳值,因此请选择每日用户互动作为要跟踪的主要指标。

最后,设置对照组和变体组,以便确定哪个组的效果更好。从对照组中选择 reward_amount,并保持其值不变。对于变体组,将其命名为“奖励较少”,然后将 reward_amount 的值更改为 1。

在此配置中,“奖励较少”组中的人员将获得一封信作为奖励,而对照组中的人员将获得两封信作为奖励。这样一来,您就可以了解奖励金额对用户的影响。
点击查看按钮后,您会看到实验概览,如下所示。

运行实验
点击开始实验按钮以运行实验。请注意,实验一旦开始,您就无法更改实验配置。

8. 管理实验
查看实验进度
您可以在 Firebase 控制台的 A/B 测试菜单中查看实验进度,该菜单将显示在以下屏幕截图中。请注意,您还可以在该卡片中查看过去 30 分钟内参与实验的用户数。

点击列表中的实验后,您就可以看到实验详情。在实验能够确定领先变体(即效果最佳的变体)之前,您会看到“现在还无法确定领先变体”消息。

实验运行一段时间后,系统会在效果提升概览部分开始显示实验期间收集的数据。您可以比较每个变体的效果,看看哪个变体的效果更好。以下屏幕截图显示了“改进概览”部分的示例。

在改进概览部分下方的表格中,您可以查看实验的目标指标的详细信息,以及实验中跟踪的其他指标。以下屏幕截图显示了“指标详情”部分的示例。

向所有用户发布领先变体
在实验运行了较长的一段时间,足以让您找到领先变体(即胜出变体)后,您就可以向所有用户发布该实验了。A/B Testing 确定明确的领先变体后,会建议您向所有用户发布该变体。

不过,即使实验尚未确定明确的领先变体,您仍然可以选择向所有用户发布某个变体。
在实验详情界面上,点击上下文菜单 (
),然后点击发布变体。

选择要向所有用户发布的变体,然后点击在 Remote Config 中查看按钮,以便在 Remote Config 中进行更改之前查看更改。

确认草稿没有任何问题后,点击发布更改按钮,即可向所有用户发布更改。

9. 全部完成!
您已完成 AdMob+Firebase 102 Android Codelab。您可以在
102-complete 文件夹中找到此 Codelab 的完整代码。

