
https://firebase.google.com/docs/remote-config/real-time?hl=ko&platform=flutter
firebase 프로젝트 설정
flutter pub add firebase_remote_config firebase_analytics
앱 인스턴스의 조건부 타겟팅에는 Google 애널리틱스가 필수 :
sdk설치와 firebase프로젝트에 google 애널리틱스 설정이 필요하다.
remoteConfig server에서 실시간 업데이트 가져오기
final remoteConfig = FirebaseRemoteConfig.instance;
await remoteConfig.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
//기본값 설정 : 서버연결에 문제가 있거나, 서버에 매개변수 설정이 없는 경우 기본값이 사용됨
await remoteConfig.setDefaults(const {
"example_param_1": 42,
"example_param_2": 3.14159,
"example_param_3": true,
"example_param_4": "Hello, world!",
});
//서버에서 매개변수값 가져오기
await remoteConfig.fetch();
//가져온 값 활성화하기
await remoteConfig.activate();
// 가져오기+ 활성화 동시에도 가능
// await remoteConfig.fetchAndActivate();
//활성화된 값 사용하기
int param1 = remoteConfig.getInt("example_param_1");
//업데이트가 있을때마다 실시간으로 정보를 가져올 수 있다.
remoteConfig.onConfigUpdated.listen((RemoteConfigUpdate event){
await remoteConfig.activate();
String latestVersion = remoteConfig.getString("example_param_4");
});
💡 **앱에서 `get` 메서드가 반환하는 매개변수 값은 다음과 같은 우선순위를 따릅니다.**
백엔드에서 가져와서 활성화한 값이 있으면 앱에서 이 값을 사용합니다. 활성화된 매개변수 값은 영구적입니다.
백엔드에서 가져온 값이 없거나 원격 구성 백엔드에서 가져온 값을 활성화하지 않은 경우 앱은 인앱 기본값을 사용합니다.
기본값을 얻고 설정하는 방법에 관한 자세한 내용은 원격 구성 템플릿 기본값 다운로드를 참조하세요.
인앱 기본값이 설정되지 않은 경우 앱은 정적 유형 값을 사용합니다. 예를 들어 int에는 0, boolean에는 false가 사용됩니다.
앱에서 단기간에 가져오기를 너무 많이 수행하면 가져오기 호출이 제한되고 FirebaseRemoteConfig의 lastFetchStatus 속성 값은 RemoteConfigFetchStatus.throttle이 됩니다.
원격 구성의 가져오기 간격 최솟값은 12시간(기본값)입니다. 즉, 실제로 발생하는 가져오기 호출 수에 관계없이 12시간 동안 백엔드에서 구성을 두 번 이상 가져올 수 없습니다.
앱 개발 단계에서는 실시간 원격 구성을 사용하지 않는 경우(권장) 앱을 개발하고 테스트할 때 빠르게 반복할 수 있도록 구성 가져오기와 활성화를 자주(한 시간에 몇 번씩) 해야 할 수도 있습니다. 개발자가 10명 이하인 프로젝트에서는 빠르게 반복할 수 있도록 setConfigSettings()를 사용하여 가져오기 간격 최솟값을 임시로 낮게 설정할 수 있습니다.
https://firebase.google.com/docs/remote-config/loading?hl=ko
업데이트 버튼 노출 조건 (필수 아님)
min_version ≤ 현재 앱 버전 < latest_version
import 'package:yaml/yaml.dart';
String curVersion =
await rootBundle.loadString("pubspec.yaml").then((value) {
final yaml = loadYaml(value);
return yaml['version'];
});
print("cur_v : $curVersion"); //**cur_v : 1.0.0+1**
배포 프로세스와 연동?
배포 프로세스 구현시 알아보기