适用于Android应用的Firebase远程配置

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远程配置 ”。

Firebase Assistant for Remote Config

接下来,按Connect to Firebase按钮将您的Android Studio项目与Firebase项目相关联。 在弹出的对话框中,选择“ 创建新的Firebase项目”选项,然后按“ 连接到Firebase”按钮。

Connect to Firebase dialog

成功建立连接后,您可以按“ 向应用程序添加远程配置”按钮,将所有必需的依赖项添加到项目的Gradle文件中。 出现提示时,按“ 接受更改”按钮以完成项目设置。

Project changes prompt

3.定义配置参数

您希望能够远程更改的所有变量都必须在Firebase项目中定义为Remote Config参数。 因此,使用浏览器登录Firebase控制台 ,向下滚动“ 项目概述”部分以找到“ 远程配置”卡,然后按“ 入门”按钮。

在“远程配置”服务的欢迎屏幕中,按“ 添加第一个参数”按钮以开始添加变量。

Remote Config welcome screen

现在让我们定义两个参数: font_sizefont_color 。 前者是数字,后者是字符串。 确保为这两个都分配了合理的默认值。

Parameter creation dialog

现在,您应该能够看到创建的两个参数。 但是,除非您发布它们的值,否则它们对您的应用程序将不可用。 因此,按“ 发布更改”按钮。

List of parameters

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_sizefont_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小部件。

App running with default values

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控制台中提到的值。 因此,请回到控制台,然后单击“远程配置”部分中看到的参数之一。

在弹出的对话框中,保持“ 参数”键字段不变,但更改值。 同样,您也可以更改其他参数的值。

最后,请确保按下“ 发布更改”按钮,以使这些值可用于“远程配置”客户端。

Updated values for the parameters

如果现在打开该应用程序,将其关闭,然后再次打开,则应该看到TextView小部件看起来有所不同。

App running with latest values from Firebase

9.向参数添加条件

您不必总是向所有用户推出相同的Remote Config值。 Firebase控制台允许您将条件添加到参数中,以便它们向用户群的不同子集返回不同的值。 您可以使用许多规则来创建此类子集。 例如,您可以定位到属于特定国家/地区的用户,使用运行特定版本Android的设备的用户,甚至是使用特定语言的用户。

由于Firebase透明地管理它们,因此您无需在代码中进行任何更改即可处理与参数关联的条件。

为了举例说明,现在让我们向font_color参数添加一个条件,使其仅对于印度用户为蓝色。

首先在Firebase控制台中单击参数。 在显示的表单中,点击为条件添加值下拉字段,然后选择定义新条件

Add value for condition field

在接下来打开的对话框中,您可以为条件指定一个名称,并从“ 如果...适用”下拉列表中选择各种选项,这些选项将使您专注于特定的用户组。 要定位到特定国家/地区的用户,您必须选择“ 国家/地区”选项。 在旁边的列表中,您可以选择一个或多个国家。 在这里选择印度

Condition creation dialog

填写完所有字段后,请按“ 创建条件”按钮以最终确定条件。

此时,您的参数将能够接受两个值而不是一个值。 保持“ 默认值”字段不变,并在条件值字段中键入蓝色的十六进制代码。

Conditional values dialog

如果您现在发布更改,印度的用户将收到其他更新,并且TextView小部件中的文本将对他们显示为蓝色。

Same app running on devices in different countries

结论

现在,您知道如何使用Firebase Remote Config和Firebase控制台远程修改应用程序。 凭借一些创造力,您可以利用该服务做很多事情,以改善应用程序的用户体验。 例如,当今大多数开发人员都使用它来更改其应用程序的主题以纪念节日。 许多人还将它与Firebase Analytics结合使用,以在其用户群上运行A / B测试。

翻译自: https://code.tutsplus.com/tutorials/firebase-remote-config-for-android-apps--cms-30557

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值