firebase remote config & 인앱 버전 관리

yeseul kim·2024년 8월 12일
post-thumbnail

왜 remote config?

  • 앱 업데이트, 서버 구축없이 key-value 형태(간단한 설정값)의 매개변수의 변경값을 앱에 적용할 수 있다.
  • client, 서버 db에 저장하기 애매한 설정정보들을 관리하는데 용이 : 테마
  • 사용자별 맞춤 설정가능
  • 인앱 버전 관리, server driven UI, 프로모션, 배너, AB테스트, 테스트 기능플래그 등에 활용할 수 있다.
  • 플랫폼, 언어, 국가, 앱 버전, 퍼센테이지 랜덤 등의 조건부 타겟팅이 가능하다.

remoteConfig 원리

https://firebase.google.com/docs/remote-config/real-time?hl=ko&platform=flutter

flutter 프로젝트에서 사용하기

  1. firebase 프로젝트 설정

  2. flutter pub add firebase_remote_config firebase_analytics
    앱 인스턴스의 조건부 타겟팅에는 Google 애널리틱스가 필수 :
    sdk설치와 firebase프로젝트에 google 애널리틱스 설정이 필요하다.

  3. 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` 메서드가 반환하는 매개변수 값은 다음과 같은 우선순위를 따릅니다.**
  1. 백엔드에서 가져와서 활성화한 값이 있으면 앱에서 이 값을 사용합니다. 활성화된 매개변수 값은 영구적입니다.

  2. 백엔드에서 가져온 값이 없거나 원격 구성 백엔드에서 가져온 값을 활성화하지 않은 경우 앱은 인앱 기본값을 사용합니다.

    기본값을 얻고 설정하는 방법에 관한 자세한 내용은 원격 구성 템플릿 기본값 다운로드를 참조하세요.

  3. 인앱 기본값이 설정되지 않은 경우 앱은 정적 유형 값을 사용합니다. 예를 들어 int에는 0boolean에는 false가 사용됩니다.

💡 minimumFetchInterval

앱에서 단기간에 가져오기를 너무 많이 수행하면 가져오기 호출이 제한되고 FirebaseRemoteConfig의 lastFetchStatus 속성 값은 RemoteConfigFetchStatus.throttle이 됩니다.
원격 구성의 가져오기 간격 최솟값은 12시간(기본값)입니다. 즉, 실제로 발생하는 가져오기 호출 수에 관계없이 12시간 동안 백엔드에서 구성을 두 번 이상 가져올 수 없습니다.

앱 개발 단계에서는 실시간 원격 구성을 사용하지 않는 경우(권장) 앱을 개발하고 테스트할 때 빠르게 반복할 수 있도록 구성 가져오기와 활성화를 자주(한 시간에 몇 번씩) 해야 할 수도 있습니다. 개발자가 10명 이하인 프로젝트에서는 빠르게 반복할 수 있도록 setConfigSettings()를 사용하여 가져오기 간격 최솟값을 임시로 낮게 설정할 수 있습니다.

remoteConfig 로딩 전략

https://firebase.google.com/docs/remote-config/loading?hl=ko

그외 주요 개념

remote config를 사용하여 인앱 버전 관리하기

  1. firebase remote config 매개변수 설정
    min_version : 업데이트 필수 최소 버전
    latest_version : 스토어에 배포된 최신버전

    update_description : 업데이트 내용
    update_date : 업데이트 날짜
💡 **필수 업데이트 조건** 현재 앱 버전 < min_version

업데이트 버튼 노출 조건 (필수 아님)
min_version ≤ 현재 앱 버전 < latest_version

  1. remote config 업데이트시 현재 앱버전과 비교, 필수 업데이트 여부 확인
  • 현재 앱버전 가져오기

yaml | Dart Package

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**
  • 정규식으로 현재버전,최신버전 비교 → 현재버전,최소버전 비교
  1. 배포 프로세스와 연동?
    배포 프로세스 구현시 알아보기

  2. 스토어 이동

profile
hello, world

0개의 댓글