forceRefreshRemoteConfig function
Force refresh Remote Config values (useful for debugging) This bypasses the minimumFetchInterval by using fetchAndActivate with force
Implementation
Future<void> forceRefreshRemoteConfig() async {
try {
logd('🔥 Force refreshing Remote Config values...');
// Log values before force refresh
final beforeRecommended =
FirebaseRemoteConfig.instance.getString('minimumAppVersionRecommendedApple');
logv('📱 Value BEFORE force refresh - minimumAppVersionRecommendedApple: $beforeRecommended');
// Set a very short fetch interval temporarily
await FirebaseRemoteConfig.instance.setConfigSettings(
RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 10),
minimumFetchInterval: Duration.zero, // Allow immediate fetch
),
);
// Force fetch and activate
final result = await FirebaseRemoteConfig.instance.fetchAndActivate();
logv('🔥 Force refresh result: $result');
// Log values after force refresh
final afterRecommended =
FirebaseRemoteConfig.instance.getString('minimumAppVersionRecommendedApple');
logv('📱 Value AFTER force refresh - minimumAppVersionRecommendedApple: $afterRecommended');
// Reset the fetch interval back to normal
await FirebaseRemoteConfig.instance.setConfigSettings(
RemoteConfigSettings(
fetchTimeout: const Duration(seconds: 10),
minimumFetchInterval: kDebugMode ? const Duration(seconds: 10) : const Duration(hours: 1),
),
);
if (beforeRecommended != afterRecommended) {
logd('🎉 Remote Config values updated after force refresh!');
} else {
logv('ℹ️ Remote Config values unchanged after force refresh');
}
} on FirebaseException catch (e) {
if (e.code == 'throttled' || e.message?.contains('throttled') == true) {
logd('🚫 Force refresh throttled - you have hit Firebase\'s rate limit');
logv('⏰ Wait before trying again, or restart the app to reset the counter');
} else if (e.message?.contains('cannot parse response') == true) {
logv('📝 Force refresh failed: Firebase Remote Config not set up in console');
logv('ℹ️ This is normal - the app will continue with default values');
} else {
logd('⚠️ Firebase error during force refresh: ${e.code} - ${e.message}');
logv('ℹ️ App continues with current values');
}
} catch (e) {
logd('⚠️ Unexpected error during force refresh: $e');
logv('ℹ️ App continues with current values');
}
}