Firebase 원격 구성 시작하기


Firebase Remote Config를 사용하여 앱의 매개변수를 정의할 수 있습니다. 클라우드에서 해당 값을 업데이트할 수 있으므로, 스프레드시트의 모양을 수정하고 앱 업데이트를 배포하지 않고 앱의 동작을 제어할 수 있습니다.

Remote Config 라이브러리는 인앱 매개변수 기본값을 저장하는 데 사용됩니다. Remote Config 백엔드에서 업데이트된 매개변수 값을 가져오고 제어 가져온 값을 앱에서 사용할 수 있게 될 때 자세히 알아보려면 원격 구성 로딩 전략을 참조하세요.

이 가이드에서는 시작하는 단계를 안내하고 샘플 코드를 제공합니다. 모든 샘플 코드는 firebase/quickstart-unity GitHub 저장소에서 클론하거나 다운로드할 수 있습니다.

1단계: 앱에 Remote Config 추가하기

Remote Config를 사용하려면 먼저 다음 작업을 해야 합니다.

  • Unity 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.

    • Unity 프로젝트에서 현재 Firebase를 사용하고 있다면 이미 등록되어 Firebase용으로 구성된 것입니다.

    • Unity 프로젝트가 없는 경우 샘플 앱을 다운로드하면 됩니다.

  • Firebase Unity SDK (구체적으로 FirebaseRemoteConfig.unitypackage)를 확인할 수 있습니다

Firebase를 Unity 프로젝트에 추가하려면 Firebase 콘솔 및 열려 있는 Unity 프로젝트 예를 들어 콘솔에서 Firebase 구성 파일을 다운로드한 후 Unity 프로젝트에 푸시해야 합니다.

2단계: 인앱 매개변수 기본값 설정

Remote Config 객체에 인앱 매개변수 기본값을 설정하면 앱이 Remote Config 백엔드에 연결되기 전에 의도한 대로 작동하고 백엔드에 값이 설정되어 있지 않으면 기본값을 사용할 수 있습니다.

이렇게 하려면 문자열 사전을 만들고 추가할 기본값을 나타내는 키-값 쌍으로 채웁니다. Remote Config 백엔드 매개변수 값을 이미 구성한 경우 이러한 키-값 쌍이 포함된 파일을 다운로드하여 문자열 사전을 구성할 수 있습니다. 자세한 내용은 다운로드 Remote Config 템플릿 기본값

(문자열이 아닌 속성은 SetDefaultsAsync() 호출 시 속성의 유형으로 변환됩니다.)

System.Collections.Generic.Dictionary<string, object> defaults =
  new System.Collections.Generic.Dictionary<string, object>();

// These are the values that are used if we haven't fetched data from the
// server
// yet, or if we ask for values that the server doesn't have:
defaults.Add("config_test_string", "default local string");
defaults.Add("config_test_int", 1);
defaults.Add("config_test_float", 1.0);
defaults.Add("config_test_bool", false);

Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.SetDefaultsAsync(defaults)
  .ContinueWithOnMainThread(task => {

3단계: 앱에서 사용할 매개변수 값 가져오기

이제 Remote Config 객체에서 매개변수 값을 가져올 수 있습니다. Remote Config 백엔드에서 값을 설정한 후 값을 가져와서 활성화하면 이 값이 앱에 적용됩니다. 그렇지 않으면 SetDefaultsAsync()를 사용하여 구성한 인앱 매개변수 값을 가져옵니다.

이 값을 가져오려면 매개변수 키를 인수로 전달해 GetValue()를 사용합니다. 이때 반환되는 ConfigValue의 속성을 사용하여 값을 다양한 기본 유형으로 변환할 수 있습니다.

4단계: 매개변수 값 설정

  1. Firebase 콘솔에서 프로젝트를 엽니다.
  2. 메뉴에서 Remote Config를 선택하여 Remote Config 대시보드를 표시합니다.
  3. 앱에 정의한 매개변수와 같은 이름으로 매개변수를 정의합니다. 각 매개변수에 기본값 및 조건부 값을 설정할 수 있으며, 기본값은 이후에 인앱 기본값을 재정의합니다. 자세한 내용은 Remote Config 매개변수 및 조건을 참고하세요.

5단계: 값 가져오기 및 활성화 (필요한 경우)

Remote Config 백엔드에서 매개변수 값을 가져오려면 다음을 호출합니다. FetchAsync() 메서드를 사용하여 축소하도록 요청합니다. 백엔드에 설정한 모든 값을 가져오고 Remote Config 객체에 캐시됩니다.

// Start a fetch request.
// FetchAsync only fetches new data if the current data is older than the provided
// timespan.  Otherwise it assumes the data is "recent enough", and does nothing.
// By default the timespan is 12 hours, and for production apps, this is a good
// number. For this example though, it's set to a timespan of zero, so that
// changes in the console will always show up immediately.
public Task FetchDataAsync() {
  DebugLog("Fetching data...");
  System.Threading.Tasks.Task fetchTask =
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.FetchAsync(
      TimeSpan.Zero);
  return fetchTask.ContinueWithOnMainThread(FetchComplete);
}

위 코드에서 FetchComplete는 서명이 ContinueWithOnMainThread()오버로드 중 하나의 매개변수와 일치하는 메서드입니다.

아래 샘플 코드에서는 FetchComplete 메서드에 이전 작업(fetchTask)이 전달되므로 FetchComplete에서 작업이 완료되었는지 확인할 수 있습니다. 그런 다음 Info.LastFetchStatus를 사용하여 성공적으로 완료되었는지 여부도 확인합니다. 그렇다면 그러면 Remote Config 매개변수 값이 ActivateAsync()를 사용하여 활성화됩니다.

private void FetchComplete(Task fetchTask) {
  if (!fetchTask.IsCompleted) {
    Debug.LogError("Retrieval hasn't finished.");
    return;
  }

  var remoteConfig = FirebaseRemoteConfig.DefaultInstance;
  var info = remoteConfig.Info;
  if(info.LastFetchStatus != LastFetchStatus.Success) {
    Debug.LogError($"{nameof(FetchComplete)} was unsuccessful\n{nameof(info.LastFetchStatus)}: {info.LastFetchStatus}");
    return;
  }

  // Fetch successful. Parameter values must be activated to use.
  remoteConfig.ActivateAsync()
    .ContinueWithOnMainThread(
      task => {
        Debug.Log($"Remote data loaded and ready for use. Last fetch time {info.FetchTime}.");
    });
}

FetchAsync()를 사용하여 가져온 값은 가져오기가 완료될 때 로컬에 캐시되지만 ActivateAsync()를 호출해야 사용할 수 있게 됩니다. 이렇게 하면 계산 중에 새 값이 적용되지 않습니다. 문제나 비정상적인 동작을 유발할 수 있는 기타 상황에서도 새 값이 적용되지 않습니다.

6단계: 실시간 업데이트 리슨

매개변수 값을 가져온 후 실시간 Remote Config를 사용하여 Remote Config 백엔드의 업데이트를 리슨합니다. 실시간 Remote Config는 사용 가능한 업데이트가 있을 때 연결된 기기에 신호를 보냅니다. 새 Remote Config를 게시한 후 자동으로 변경사항을 가져옵니다. 있습니다.

실시간 업데이트는 Android 및 Apple 플랫폼용 Firebase Unity SDK v11.0.0 이상에서 지원됩니다.

  1. 앱에서 OnConfigUpdateListener를 추가하여 업데이트 리슨을 시작하고 새로운 또는 업데이트된 매개변수 값을 자동으로 가져옵니다. 그런 다음 ConfigUpdateListenerEventHandler를 만들어 업데이트 이벤트를 처리합니다. 다음 예시는 업데이트를 리슨하고 새로 가져온 값을 사용하여 업데이트된 환영 메시지를 표시합니다.
// Invoke the listener.
void Start()
{
  Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
    += ConfigUpdateListenerEventHandler;
}

// Handle real-time Remote Config events.
void ConfigUpdateListenerEventHandler(
   object sender, Firebase.RemoteConfig.ConfigUpdateEventArgs args) {
  if (args.Error != Firebase.RemoteConfig.RemoteConfigError.None) {
    Debug.Log(String.Format("Error occurred while listening: {0}", args.Error));
    return;
  }

  Debug.Log("Updated keys: " + string.Join(", ", args.UpdatedKeys));
  // Activate all fetched values and then display a welcome message.
  remoteConfig.ActivateAsync().ContinueWithOnMainThread(
    task => {
        DisplayWelcomeMessage();
    });
}

// Stop the listener.
void OnDestroy() {
    Firebase.RemoteConfig.FirebaseRemoteConfig.DefaultInstance.OnConfigUpdateListener
      -= ConfigUpdateListenerEventHandler;
}

다음에 Remote Config의 새 버전을 게시하면 기기가 완료 핸들러를 호출합니다.

다음 단계

아직 살펴보지 않았다면 Remote Config에서 살펴보세요. 사용 사례를 살펴보고 주요 개념 및 고급 전략 문서: