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的值,在应用程序中再次获取就会发现结果发生了改变

相关推荐
crasowas2 小时前
Flutter问题记录 - 适配Xcode 16和iOS 18
flutter·ios·xcode
老田低代码1 天前
Dart自从引入null check后写Flutter App总有一种难受的感觉
前端·flutter
AiFlutter1 天前
Flutter Web首次加载时添加动画
前端·flutter
ZemanZhang3 天前
Flutter启动无法运行热重载
flutter
AiFlutter3 天前
Flutter-底部选择弹窗(showModalBottomSheet)
flutter
帅次4 天前
Android Studio:驱动高效开发的全方位智能平台
android·ide·flutter·kotlin·gradle·android studio·android jetpack
程序者王大川4 天前
【前端】Flutter vs uni-app:性能对比分析
前端·flutter·uni-app·安卓·全栈·性能分析·原生
yang2952423614 天前
使用 Vue.js 将数据对象的值放入另一个数据对象中
前端·vue.js·flutter
我码玄黄4 天前
解锁定位服务:Flutter应用中的高德地图定位
前端·flutter·dart
hudawei9964 天前
flutter widget 设置GestureDetector点击无效
flutter·gesturedetector·点击事件