Firebase Remote Config是一项独特的服务,旨在让您在应用程序实例安装在用户设备上时对其进行细粒度控制。 通过使用它,您可以可靠地修改整个用户群中应用程序的外观和行为,而无需在Google Play上发布更新。
如果您认为这可能会带来安全风险,请让我向您保证,Remote Config不允许您将新代码远程注入到您的应用程序中。 它仅允许您通过Firebase控制台修改代码中已经存在的某些预定变量的值。 实际上,您可以将变量视为应用程序所依赖的服务器端变量。
在本教程中,我将向您展示如何在Android应用程序中使用Remote Config的一些最强大的功能。
1.为什么要使用远程配置?
Remote Config API主要用于替代应用程序中的简单硬编码值。 此类值的示例可以是颜色,尺寸,延迟和标签。
为了更好地理解API的重要性,请考虑以下情形:创建和发布具有硬编码值的应用程序,以表示其所有标签的字体大小和颜色。 几天后,您的用户告诉您,他们希望使用更大的字体和不同的字体颜色。 由于值是硬编码的,因此要更改它们,您现在必须修改代码,再次构建应用,为其提供新的版本号,然后将其重新发布在Google Play上。 如此小的修复工作量很大。 而且,如果用户改变了主意,则必须重新做一遍!
借助Firebase远程配置,您可以使字体大小和字体颜色可远程配置,并使用Firebase控制台随时随地快速更改其值,并进行多次更改。 这种现代化的方法还可以确保所有用户的设备上都能尽快进行更改,而无需他们手动下载任何更新。
2.项目设置
使用Android Studio的Firebase助手,只需单击几下即可将Remote Config添加到项目中。
首先转到“ 工具”>“ Firebase”,然后在出现的面板中选择“ 远程配置”>“设置Firebase远程配置 ”。
接下来,按Connect to Firebase按钮将您的Android Studio项目与Firebase项目相关联。 在弹出的对话框中,选择“ 创建新的Firebase项目”选项,然后按“ 连接到Firebase”按钮。
成功建立连接后,您可以按“ 向应用程序添加远程配置”按钮,将所有必需的依赖项添加到项目的Gradle文件中。 出现提示时,按“ 接受更改”按钮以完成项目设置。
3.定义配置参数
您希望能够远程更改的所有变量都必须在Firebase项目中定义为Remote Config参数。 因此,使用浏览器登录Firebase控制台 ,向下滚动“ 项目概述”部分以找到“ 远程配置”卡,然后按“ 入门”按钮。
在“远程配置”服务的欢迎屏幕中,按“ 添加第一个参数”按钮以开始添加变量。
现在让我们定义两个参数: font_size
和font_color
。 前者是数字,后者是字符串。 确保为这两个都分配了合理的默认值。
现在,您应该能够看到创建的两个参数。 但是,除非您发布它们的值,否则它们对您的应用程序将不可用。 因此,按“ 发布更改”按钮。
4.准备布局
为了能够使用我们创建的参数,请添加一个TextView
小部件,在您活动的布局XML文件中显示一条消息。 如果您为本教程创建了一个新的Android Studio项目,请随时使用默认情况下可用的“ Hello World” TextView
小部件,但请确保为其指定一个ID。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="This is a test!"
android:id="@+id/my_message"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
现在,在您活动的onCreate()
方法中,您可以使用findViewById()
方法获得对小部件的引用。
val myMessage = findViewById<TextView>(R.id.my_message)
5.初始化远程配置
即使用户未连接到互联网,我们的应用程序也必须能够在首次打开时正常运行。 因此,它需要知道我们的Remote Config参数的名称和默认值。 创建一个地图来存储它们是一个好主意。
val defaults = mapOf(
"font_size" to 18,
"font_color" to "#ff0000"
)
请注意,名称和默认值必须与Firebase控制台中的名称和默认值相同。
现在,我们可以使用defaults
映射来为Remote Config服务初始化客户端。 为此,首先通过调用FirebaseRemoteConfig
类的getInstance()
方法创建客户端的实例,然后将映射传递到其setDefaults()
方法。
val remoteConfig = FirebaseRemoteConfig.getInstance()
remoteConfig.setDefaults(defaults)
至此,Remote Config客户端已准备就绪,我们可以开始使用其提供的值了。
6.使用默认值
FirebaseRemoteConfig
实例提供了一些直观的命名方法,可用于获取Remote Config参数的值。 例如,您可以调用getDouble()
方法来获取数字值。 同样,您可以调用getString()
方法来获取字符串值。
以下代码显示了如何获取font_size
和font_color
参数的值。
val fontSize = remoteConfig.getDouble("font_size")
val fontColor = remoteConfig.getString("font_color")
一旦有了值,就可以随意使用它们。 现在,让我们使用它们来更改myMessage
小部件的外观。
myMessage.textSize = fontSize.toFloat()
myMessage.setTextColor(Color.parseColor(fontColor))
如果立即运行该应用程序,则可以使用Remote Config参数的默认值查看TextView
小部件。
7.获取最新值
现在,Remote Config客户端仅从我们传递给它的映射中返回值。 要使其使用从Firebase获取的值,我们必须调用其activateFetched()
方法。
remoteConfig.activateFetched()
但是, activateFetched()
方法实际上并没有从Firebase获取值。 因此,我们必须接下来调用异步运行的fetch()
方法来获取值。
remoteConfig.fetch()
如果此时运行该应用程序,它将仍然使用默认值。 但是,如果您等待几秒钟,将其关闭,然后再次打开,它将开始使用您在Firebase控制台中输入的值。
通常,最好让更改的值仅在用户下次打开应用程序时才生效。 您可以将侦听器附加到fetch()
方法返回的Task
对象上,并在侦听器内部更新用户界面,但是您的用户可能不喜欢突然的更改。
但是,您可以将侦听器用于调试目的。
remoteConfig.fetch().addOnSuccessListener {
Log.i(TAG, "Fetched values successfully")
}
8.更改值
当前,映射中的值与远程值匹配。 为了能够看到运行中的远程配置服务,我们必须更改我们在Firebase控制台中提到的值。 因此,请回到控制台,然后单击“远程配置”部分中看到的参数之一。
在弹出的对话框中,保持“ 参数”键字段不变,但更改值。 同样,您也可以更改其他参数的值。
最后,请确保按下“ 发布更改”按钮,以使这些值可用于“远程配置”客户端。
如果现在打开该应用程序,将其关闭,然后再次打开,则应该看到TextView
小部件看起来有所不同。
9.向参数添加条件
您不必总是向所有用户推出相同的Remote Config值。 Firebase控制台允许您将条件添加到参数中,以便它们向用户群的不同子集返回不同的值。 您可以使用许多规则来创建此类子集。 例如,您可以定位到属于特定国家/地区的用户,使用运行特定版本Android的设备的用户,甚至是使用特定语言的用户。
由于Firebase透明地管理它们,因此您无需在代码中进行任何更改即可处理与参数关联的条件。
为了举例说明,现在让我们向font_color
参数添加一个条件,使其仅对于印度用户为蓝色。
首先在Firebase控制台中单击参数。 在显示的表单中,点击为条件添加值下拉字段,然后选择定义新条件 。
在接下来打开的对话框中,您可以为条件指定一个名称,并从“ 如果...适用”下拉列表中选择各种选项,这些选项将使您专注于特定的用户组。 要定位到特定国家/地区的用户,您必须选择“ 国家/地区”选项。 在旁边的列表中,您可以选择一个或多个国家。 在这里选择印度 。
填写完所有字段后,请按“ 创建条件”按钮以最终确定条件。
此时,您的参数将能够接受两个值而不是一个值。 保持“ 默认值”字段不变,并在条件值字段中键入蓝色的十六进制代码。
如果您现在发布更改,印度的用户将收到其他更新,并且TextView
小部件中的文本将对他们显示为蓝色。
结论
现在,您知道如何使用Firebase Remote Config和Firebase控制台远程修改应用程序。 凭借一些创造力,您可以利用该服务做很多事情,以改善应用程序的用户体验。 例如,当今大多数开发人员都使用它来更改其应用程序的主题以纪念节日。 许多人还将它与Firebase Analytics结合使用,以在其用户群上运行A / B测试。
翻译自: https://code.tutsplus.com/tutorials/firebase-remote-config-for-android-apps--cms-30557