关于 firebase-remote-config
面向 Flutter 的 Firebase Remote Config 使用指南,介绍参数管理、获取与激活配置,以及实时更新、定向配置和测试。
主要功能
- 01设置参数默认值与类型化取值
- 02获取并激活远程配置
- 03监听实时配置变更
- 04配置定向条件与 A/B 测试
- 05处理限流与离线回退
适用场景
- 01无需发布应用即可调整功能标志
- 02在应用启动时应用更新后的配置
- 03配置变化后刷新界面
- 04为选定用户群体测试参数值
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ evanca/ flutter-ai-rules --skill firebase-remote-config安装后在 Claude Code 中输入/firebase-remote-config确认已加载。
详细介绍
Firebase Remote Config 技能
本技能介绍如何在 Flutter 应用中正确使用 Firebase Remote Config。
使用时机
在以下情况下使用本技能:
- 实现功能开关或远程配置,无需发布应用更新。
- 管理参数默认值并获取远程值。
- 实现实时配置更新,立即应用变更。
- 设置 A/B 测试或针对用户细分进行条件定向。
1. 设置和配置
flutter pub add firebase_remote_config
flutter pub add firebase_analytics # required for conditional targeting of app instances
import 'package:firebase_remote_config/firebase_remote_config.dart';
final remoteConfig = FirebaseRemoteConfig.instance;
- 在 Firebase 项目中启用 Google Analytics,以便进行用户属性和受众定向。
- 确保未停用 Remote Config REST API——SDK 依赖此 API。
- 对于 macOS,请在 Xcode 中启用 Keychain Sharing。
配置设置:
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
2. 参数管理
设置应用内默认值(确保应用在连接后端之前按预期运行):
await remoteConfig.setDefaults(const {
"feature_new_onboarding": false,
"max_retry_attempts": 3,
"welcome_message": "Hello, world!",
"promo_discount_pct": 0.0,
});
使用特定类型的 getter 读取值:
final showNewOnboarding = remoteConfig.getBool("feature_new_onboarding");
final maxRetries = remoteConfig.getInt("max_retry_attempts");
final welcomeMsg = remoteConfig.getString("welcome_message");
final discount = remoteConfig.getDouble("promo_discount_pct");
- 切勿在 Remote Config 键或值中存储机密数据——最终用户可以访问这些数据。
- 在 Firebase 控制台中定义的参数名称应与应用中的完全相同。
- 使用共同前缀为相关参数分组(例如,
login_timeout、login_attempts_max)。
3. 获取和激活
await remoteConfig.fetchAndActivate();
- 使用
fetchAndActivate(),通过一次调用获取并应用值。 - 也可以分别调用
fetch()和activate(),以控制值生效的时间。 - 在适当的时机(例如,应用启动时)激活已获取的值,以提供流畅的用户体验。
- 检查
remoteConfig.lastFetchStatus,确定获取操作是成功、失败还是受到限流。 - 妥善处理获取失败的情况——获取失败时会自动使用默认值。
4. 实时更新
remoteConfig.onConfigUpdated.listen((event) async {
await remoteConfig.activate();
// event.updatedKeys contains the changed parameter names
if (event.updatedKeys.contains("feature_new_onboarding")) {
// Refresh UI based on the new value
}
});
- Web 不支持实时 Remote Config。
- 激活新的配置值时更新 UI 状态。
- 确保实时更新不会在用户操作过程中影响体验。
5. 限流和性能
- 如果应用获取配置过于频繁,获取调用会受到限流。
- 生产环境中的默认最小获取间隔:12 小时。
- 开发期间可以使用较短的间隔,但仅限调试版本:
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));
- 用户群体较大时,请留意服务端配额限制。
6. 测试和调试
- 使用 Firebase 控制台中的条件值测试配置,无需重新部署应用。
- 使用不同的参数值,为不同的用户细分实现 A/B 测试。
- 使用默认值和远程值测试应用。
- 验证应用能否妥善处理运行时的配置变更。
- 测试离线行为,确保能正确回退到默认值。
参考资料
评论
支持 Markdown