Flutter集成Firebase中的Remote Config

远程配置(Remote Config)的功能

  • 动态配置参数:Remote Config 允许您在不更新应用程序的情况下,实时更改应用程序的参数,如文本、颜色、布尔值等
  • 条件化参数:您可以基于用户的特定条件(例如用户地理位置、设备类型、应用版本等)来配置参数。这样可以实现针对不同用户群体的个性化配置
  • A/B 测试:Remote Config 可以用于进行 A/B 测试,通过配置不同的参数值来比较用户群体的反应,并确定哪个版本的参数对用户更有效
  • 实时生效:一旦您在 Firebase 控制台上更改了配置参数,这些更改就会立即生效,而无需等待用户下载新版本或重新启动应用程序
  • App根据远程配置来展示不同的文本以及界面

Flutter集成Remote Config步骤

一、Flutter集成Firebase框架

参考:00-Flutter集成Firebase框架

二、在Firebase网页端创建配置

访问https://console.firebase.google.com/u/0/,点击自己的项目后再点击左侧的发布与监控,然后再点击Remote Config即可看到远程配置界面

选择客户端,然后点击创建配置,在右侧的弹窗中填写参数名称、选择数据类型以及输入默认值后点击保存按钮,最后再点击发布更改按钮

三、在项目中添加Realtime Analysis

添加Analytics SDK到应用中

安装firebase_analytics插件

|---------------------------------------------------------------------------------------------------------------------------------|
| flutter pub add firebase_remote_config # ios的额外步骤 cd ios #如果下面指令报错,则删除Podfile.lock文件再执行下面指令 pod install --repo-update |

在Flutter中获取Remot Config的单例对象并设置最小提取间隔以实现频繁刷新

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig.setConfigSettings(RemoteConfigSettings( ``fetchTimeout: ``const Duration(minutes: ``1``), ``minimumFetchInterval: ``const Duration(hours: ``1``), )); |

设置应用内默认参数值

以在 Remote Config 对象中设置应用内默认参数值,以便应用在连接到 Remote Config 后端之前能够按预期运行,并且保证在后端中未设置任何值时可以使用默认值

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| await remoteConfig.setDefaults(``const { ``"test1"``: ``"我是默认的test1"``, ``"test2"``: ``3.14159``, ``"test3"``: ``true``, ``"test4"``: ``"Hello, world!"``, }); |

获取要在应用中使用的参数值

我们可以从 Remote Config 对象中获取参数值。如果您在后端中设置值,然后提取并激活它们,这些值便可供您的应用使用。否则,您将获得使用 setDefaults() 方法配置的应用内参数值。

如需获取这些值,请调用下列与应用所需数据类型对应的方法,并传入参数键作为调用的实参:

  • getBool()
  • getDouble()
  • getInt()
  • getString()
提取并激活值
  • 如需从 Remote Config 后端提取参数值,调用 fetch() 方法。系统将提取您在后端中设置的所有值,并将其存储在 Remote Config 对象中。

  • 如需将提取的参数值提供给您的应用,请调用 activate() 方法。

    如果您想在一次调用中提取并激活值,请使用 fetchAndActivate() 请求从 Remote Config 后端提取值,并使其可供应用使用:

|------------------------------------------|
| await remoteConfig.fetchAndActivate(); |

代码举例

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| final remoteConfig = FirebaseRemoteConfig.instance; await remoteConfig ``.setConfigSettings(RemoteConfigSettings( ``fetchTimeout: ``const Duration(seconds: ``2``), ``minimumFetchInterval: ``const Duration(seconds: ``5``), )); await remoteConfig.setDefaults(``const { ``"test1"``: ``"我是默认的test1"``, ``"test2"``: ``"我是默认的test2"``, ``"test3"``: ``true``, ``"test4"``: ``"Hello, world!"``, }); await remoteConfig.fetchAndActivate(); var test1 = remoteConfig.getString(``"test1"``); var test2 = remoteConfig.getString(``"test2"``); print(``"test1 $test1"``); print(``"test2 $test2"``); |

我们看到test1的值是云端设置的内容,当我们前往Firebase后台修改test1的值,在应用程序中再次获取就会发现结果发生了改变

相关推荐
程序员Ctrl喵1 天前
异步编程:Event Loop 与 Isolate 的深层博弈
开发语言·flutter
前端不太难1 天前
Flutter 如何设计可长期维护的模块边界?
flutter
小蜜蜂嗡嗡1 天前
flutter列表中实现置顶动画
flutter
始持1 天前
第十二讲 风格与主题统一
前端·flutter
始持1 天前
第十一讲 界面导航与路由管理
flutter·vibecoding
始持1 天前
第十三讲 异步操作与异步构建
前端·flutter
新镜1 天前
【Flutter】 视频视频源横向、竖向问题
flutter
黄林晴2 天前
Compose Multiplatform 1.10 发布:统一 Preview、Navigation 3、Hot Reload 三箭齐发
android·flutter
Swift社区2 天前
Flutter 应该按功能拆,还是按技术层拆?
flutter
肠胃炎2 天前
树形选择器组件封装
前端·flutter