mcpField
F
firebase-remote-config

firebase-remote-config

github.com/evanca开发663167 次安装3 周前更新
代码仓库

关于 firebase-remote-config

面向 Flutter 的 Firebase Remote Config 使用指南,介绍参数管理、获取与激活配置,以及实时更新、定向配置和测试。

主要功能

  1. 01设置参数默认值与类型化取值
  2. 02获取并激活远程配置
  3. 03监听实时配置变更
  4. 04配置定向条件与 A/B 测试
  5. 05处理限流与离线回退

适用场景

  1. 01无需发布应用即可调整功能标志
  2. 02在应用启动时应用更新后的配置
  3. 03配置变化后刷新界面
  4. 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