말랑한 하루

[Flutter] Firebase Remote Config 본문

개발/Flutter

[Flutter] Firebase Remote Config

지수는말랑이 2024. 3. 4. 20:00
반응형

Firebase에서 제공하는 Remote Config는 사용자가 앱 업데이트를 다운할 필요 없이 앱의 동작과 모양을 변경할 수 있는 클라우드 서비스입니다. Firebase Console과 Remote Config backend API를 활용하여 모든 앱 사용자 또는 특정 사용자들에게 인앱 기본값을 재정의할 수 있습니다.

 

업데이트를 적용할 시점에서 앱을 제어할 수 있으며, 성능에 거의 영향을 주지 않고 업데이트를 자주 확인하여 적용할 수 있습니다.

 

Remote Config에 저장된 key-value로 구성된 매개변수에 저장해놓은 버전 정보와 packageManager를 활용해 현재 애플리케이션의 버전을 비교하여 앱을 Store로 Redirect 해주는 방식이라 생각하면 편합니다.

 

애플리케이션을 업데이트 하지 않아도, Remote Config에서 변경되는 최신 업데이트 버전에 대한 정보를 가져올 수 있으므로 현재 사용 중인 애플리케이션이 구 버전인지 확인할 수 있습니다.

 

Remote Config는 어떻게 설정하는지, Flutter에서 Firebase는 어떻게 활용하는지 작성해 가보도록 하겠습니다.

🐇 Firebase Remote Config

※ reference : https://console.firebase.google.com/u/0/?hl=ko

 

Firebase에 나의 프로젝트를 추가하고, 제품 카테고리 중 "출시 및 모니터링" 항목에서 Remtoe Config를 선택합니다.

 

이후, "구성 만들기" 버튼을 선택하고 "첫 번째 매개변수 만들기"를 진행합니다.

 

우리는 버전 정보를 관리할 것이므로 매개변수의 이름은 최신 업데이트 버전을 의미할 수 있도록 작성해줍니다. (latest_version)

 

이후 해당 매개변수에 대한 설명(description)과 값(현재 애플리케이션의 최신 버전, 0.0.0 etc…)을 작성하고 저장합니다.

 

그러면 해당 key-value를 지닌 매개변수에 대해 "변경사항 게시"를 진행합니다.

 

🥕 Flutter에 Firebase 추가

※ reference : https://firebase.google.com/docs/flutter/setup?hl=ko&platform=ios

 

Flutter 프레임워크에 Firebase를 연동하는 기본 작업을 진행합니다.

 

🍒 필수 CLI 도구 설치 - Firebase CLI

npm을 활용해 Firebase CLI를 설치합니다.

npm install -g firebase-tools

또는 설치용 바이너리(https://firebase.tools/bin/win/instant/latest)를 통해 설치합니다.

 

설치 후 안내 되는 항목 "Allow Firebase to collect CLI and Emulator Suite usage and error reporting information?”에 대해 Y/n을 선택합니다.

 

npm을 활용하여 설치한 경우 다음 명령어를 입력하고,

// VSCode의 경우 cmd 사용해야함
firebase login

CLI를 설치한 경우, 이후 안내 되는 URL을 통해 Firebase CLI에 Google 계정을 로그인합니다.

 

🍒 필수 CLI 도구 설치 - FlutterFire CLI

Firebase를 사용할 수 있도록 앱을 구성할 때 도움을 주는 flutterfire_cli를 설치합니다.

dart pub global activate flutterfire_cli

결과로 특정 경로를 시스템 환경 변수에 등록하라는 문구가 나온다

Warning: Pub installs executables into C:\\Users\\{UserName}\\AppData\\Local\\Pub\\Cache\\bin, which is not on your path.
You can fix that by adding that directory to your system's "Path" environment variable.
A web search for "configure windows path" will show you how.

내 컴퓨터>속성>고급 시스템 설정>환경변수 경로를 통해 사용자 변수에 이름은 FLUTTERFIRE_HOME, 값은 C:\\Users\\{UserName}\\AppData\\Local\\Pub\\Cache\\bin를 작성하여 추가해준다.

 

이후 사용자 변수의 Path에 %FLUTTERFIRE_HOME%를 추가해준다.

 

환경 변수가 적용될 수 있도록, 사용 중인 터미널을 재시작하고(IDE 포함) flutterfire_cli를 재활성화 시켜준다

dart pub global deactivate flutterfire_cli
dart pub global activate flutterfire_cli

환경 변수를 등록하라는 문구가 뜨지 않으면 다음 단계를 진행할 수 있다.(그럼에도 불구하고 문구가 보인다면 재부팅을 권장한다)

 

🍒 앱 구성

Flutter 프로젝트가 FlutterFire CLI를 사용하여 Firebase에 연결할 수 있도록 다음 명령어를 실행합니다.

flutterfire configure

이후 프로젝트를 선택하고(Select a Firebase project to configure your Flutter application with ~), 지원하는 플랫폼을 선택합니다(Which platforms should your configuration support (use arrow keys & space to select)? ~).

web       ~
android   ~
ios       ~

이후 제공되는 플랫폼 별 Firebase App ID를 기록합니다.

 

🍒 앱 Firebase 초기화

먼저 firebase_core 플러그인을 설치합니다.

flutter pub add firebase_core
flutter pub get

이후 Firebase 구성이 최신 상태인지 확인합니다. 단, 이전 단계에서 진행했다면 넘어갑니다.

flutterfire configure

lib/main.dart파일에서 Firebase core 플러그인과 firebase_options.dart를 import하고, DefaultFirebaseOptions 객체를 활용하여 Firebase를 초기화합니다.

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_options.dart';

void main() async {
	...

  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  runApp(const ProviderScope(child: MaplespyApp()));
}

 

 

🥕 Flutter에서 Firebase Remote Config 사용하기

※ reference : https://firebase.flutter.dev/docs/remote-config/get-started

 

Flutter에서 Firebase의 Remote Config를 사용할 수 있도록 firebase_remote_config 라이브러리를 설치한다.

flutter pub add firebase_remote_config
flutter pub add firebase_analytics
flutter pub get

firebase_remote_config는 원격 구성 싱글톤 객체를 가져올 수 있고, 자주 갱신될 수 있도록 최소 갱신 시간을 설정합니다.

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!",
});

앱에서 사용할 매개변수를 가져오기 위해선 인스턴스의 getBool/getDouble/getInt/getString 메소드를 활용하세요.

만약 한번의 호출만으로 값을 가져오고 활성화하고 싶다면 fetchAndActivate 메소드를 활용하세요

await remoteConfig.fetchAndActivate();
반응형
Comments