Firebase 원격 구성을 사용하여 앱에서 매개변수를 정의하고 클라우드에서 해당 값을 업데이트할 수 있으므로 앱 업데이트를 배포하지 않고도 앱의 모양과 동작을 수정할 수 있습니다.
원격 구성 라이브러리는 인앱 기본 매개변수 값을 저장하고, 원격 구성 백엔드에서 업데이트된 매개변수 값을 가져오고, 가져온 값을 앱에서 사용할 수 있는 시기를 제어하는 데 사용됩니다. 자세히 알아보려면 원격 구성 로드 전략 을 참조하세요.
이 가이드는 시작 단계를 안내하고 몇 가지 샘플 코드를 제공합니다. 모두 firebase/quickstart-unity GitHub 저장소에서 복제하거나 다운로드할 수 있습니다.
1단계: 앱에 원격 구성 추가
원격 구성 을 사용하려면 먼저 다음을 수행해야 합니다.
Unity 프로젝트를 등록하고 Firebase를 사용하도록 구성합니다.
Unity 프로젝트에서 이미 Firebase를 사용하고 있다면 이미 Firebase용으로 등록 및 구성된 것입니다.
Unity 프로젝트가 없는 경우 샘플 앱 을 다운로드할 수 있습니다.
Unity 프로젝트에 Firebase Unity SDK (특히
FirebaseRemoteConfig.unitypackage
)를 추가합니다.
Unity 프로젝트에 Firebase를 추가하려면 Firebase 콘솔 과 열려 있는 Unity 프로젝트 모두에서 작업이 필요합니다(예: 콘솔에서 Firebase 구성 파일을 다운로드한 다음 Unity 프로젝트로 이동).
2단계: 인앱 기본 매개변수 값 설정
앱이 원격 구성 백엔드에 연결되기 전에 의도한 대로 작동하고 백엔드에 아무것도 설정되지 않은 경우 기본값을 사용할 수 있도록 원격 구성 개체에서 인앱 기본 매개변수 값을 설정할 수 있습니다.
이렇게 하려면 문자열 사전을 만들고 추가하려는 기본값을 나타내는 키/값 쌍으로 채웁니다. 원격 구성 백엔드 매개변수 값을 이미 구성한 경우 이러한 키/값 쌍이 포함된 파일을 다운로드하고 이를 사용하여 문자열 사전을 구성할 수 있습니다. 자세한 내용은 원격 구성 템플릿 기본값 다운로드 를 참조하세요.
(비문자열 속성은 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단계: 앱에서 사용할 매개변수 값 가져오기
이제 원격 구성 개체에서 매개변수 값을 가져올 수 있습니다. 원격 구성 백엔드에서 값을 설정하고 가져온 다음 활성화하면 해당 값을 앱에서 사용할 수 있습니다. 그렇지 않으면 SetDefaultsAsync()
를 사용하여 구성된 인앱 매개변수 값을 가져옵니다.
이러한 값을 얻으려면 매개 변수 키를 인수로 제공하여 GetValue()
를 사용하십시오. 이는 값을 다양한 기본 유형으로 변환하는 속성이 있는 ConfigValue
를 반환합니다.
4단계: Firebase 콘솔에서 앱 연결
Firebase 콘솔 에서 Firebase 프로젝트에 앱을 추가합니다.
5단계: 매개변수 값 설정
- Firebase 콘솔 에서 프로젝트를 엽니다.
- 원격 구성 대시보드를 보려면 메뉴에서 원격 구성 을 선택합니다.
- 앱에서 정의한 매개변수와 이름이 같은 매개변수를 정의합니다. 각 매개변수에 대해 기본값(결국 인앱 기본값을 재정의함) 및 조건부 값을 설정할 수 있습니다. 자세히 알아보려면 원격 구성 매개변수 및 조건 을 참조하세요.
6단계: 값 가져오기 및 활성화(필요한 경우)
원격 구성 백엔드에서 매개변수 값을 가져오려면 FetchAsync()
메서드를 호출하세요. 백엔드에서 설정한 모든 값은 원격 구성 개체에서 가져와 캐시됩니다.
// 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
를 사용하여 완료 여부 도 확인합니다. 그렇다면 원격 구성 매개변수 값은 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()
가 호출될 때까지 사용할 수 없습니다. 이를 통해 새 값이 계산 중간에 적용되지 않도록 하거나 문제나 이상한 동작을 유발할 수 있는 다른 시간에 적용되지 않도록 할 수 있습니다.
7단계: (선택 사항) 개발자 모드 활성화
개발 중에 제한을 비활성화하는 데 사용할 수 있는 개발자 모드를 활성화하려면 FirebaseRemoteConfig.Setting
속성을 사용하여 IsDeveloperMode
가 true로 설정된 새 ConfigSettings
를 설정할 수 있습니다.
다음 단계
If you haven't already, explore the Remote Config use cases , and take a look at some of the key concepts and advanced strategies documentation, including: