firebase-remote-config
Use when implementing feature flags, running A/B tests, setting parameter defaults, fetching/activating config, or enabling real-time config updates.
它会碰到什么
扫了多少1 个文本文件,4 KB
它会碰到什么联网
命中总数1 处
命中统计严重 0 · 高 0 · 中 0 · 低 1
这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。
技能内容
Firebase Remote Config Skill
This skill defines how to correctly use Firebase Remote Config in Flutter applications.
When to Use
Use this skill when:
- Implementing feature flags or remote configuration without deploying app updates.
- Managing parameter defaults and fetching remote values.
- Implementing real-time config updates for instant changes.
- Setting up A/B testing or conditional targeting for user segments.
1. Setup and Configuration
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;
- Enable Google Analytics in the Firebase project for user property and audience targeting.
- Ensure the Remote Config REST API is not disabled — the SDK depends on it.
- For macOS, enable Keychain Sharing in Xcode.
Configure settings:
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
2. Parameter Management
Set in-app defaults (ensures the app behaves as intended before connecting to the backend):
await remoteConfig.setDefaults(const {
"feature_new_onboarding": false,
"max_retry_attempts": 3,
"welcome_message": "Hello, world!",
"promo_discount_pct": 0.0,
});
Read values with type-specific getters:
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");
- Never store confidential data in Remote Config keys or values — they can be accessed by end users.
- Define parameters with the same names in the Firebase console as those in the app.
- Group related parameters with common prefixes (e.g.,
login_timeout,login_attempts_max).
3. Fetching and Activating
await remoteConfig.fetchAndActivate();
- Use
fetchAndActivate()to fetch and apply values in a single call. - Alternatively, call
fetch()thenactivate()separately to control when values take effect. - Activate fetched values at appropriate times (e.g., app start) for a smooth user experience.
- Check
remoteConfig.lastFetchStatusto determine if the fetch was successful, failed, or throttled. - Handle fetch failures gracefully — default values are used automatically when fetch fails.
4. Real-time Updates
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
}
});
- Real-time Remote Config is not available for Web.
- Update UI state when new configuration values are activated.
- Ensure real-time updates do not disrupt the user experience mid-flow.
5. Throttling and Performance
- Fetch calls are throttled if an app fetches too frequently.
- Default minimum fetch interval in production: 12 hours.
- For development, use a shorter interval — but only in debug builds:
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(minutes: 5),
));
- Be mindful of service-side quota limits with a large user base.
6. Testing and Debugging
- Use conditional values in the Firebase console to test configurations without new app deployments.
- Implement A/B testing with different parameter values for different user segments.
- Test the app with both default and remote values.
- Verify graceful handling of configuration changes at runtime.
- Test offline behavior to ensure proper fallback to defaults.
References
想直接用这个技能?
本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。