Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

Firebase 원격 구성 시작하기

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.


Firebase 원격 구성을 사용하여 앱에서 매개변수를 정의하고 클라우드에서 해당 값을 업데이트할 수 있으므로 앱 업데이트를 배포하지 않고도 앱의 모양과 동작을 수정할 수 있습니다. 이 가이드는 시작 단계를 안내하고 몇 가지 샘플 코드를 제공합니다. 모두 firebase/quickstart-android GitHub 저장소에서 복제하거나 다운로드할 수 있습니다.

1단계: 앱에 Firebase 및 원격 구성 SDK 추가

  1. 아직 추가하지 않았다면 Android 프로젝트에 Firebase를 추가합니다 .

  2. 원격 구성의 경우 사용자 속성 및 잠재고객에 대한 앱 인스턴스의 조건부 타겟팅 에 Google 애널리틱스가 필요합니다. 프로젝트에서 Google Analytics를 활성화 했는지 확인하십시오.

  3. 모듈(앱 수준) Gradle 파일 (일반적으로 <project>/<app-module>/build.gradle )에서 원격 구성 Android 라이브러리에 대한 종속성을 추가합니다. Firebase Android BoM을 사용하여 라이브러리 버전 관리를 제어하는 ​​것이 좋습니다.

    또한 애널리틱스를 설정하는 과정에서 Google 애널리틱스용 Firebase SDK를 앱에 추가해야 합니다.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Firebase Android BoM을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.

    (대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config:21.2.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add the dependencies for the Remote Config and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Firebase Android BoM을 사용하면 앱에서 항상 호환되는 버전의 Firebase Android 라이브러리를 사용합니다.

    (대안) BoM을 사용 하지 않고 Firebase 라이브러리 종속성 추가

    Firebase BoM을 사용하지 않기로 선택한 경우 종속성 줄에 각 Firebase 라이브러리 버전을 지정해야 합니다.

    앱에서 여러 Firebase 라이브러리를 사용하는 경우 BoM을 사용하여 모든 버전이 호환되도록 라이브러리 버전을 관리하는 것이 좋습니다.

    dependencies {
        // Add the dependencies for the Remote Config and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-config-ktx:21.2.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    

2단계: 원격 구성 싱글톤 객체 가져오기

원격 구성 개체 인스턴스를 가져오고 자주 새로고침할 수 있도록 최소 가져오기 간격을 설정합니다.

Java

FirebaseRemoteConfig mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettingsAsync(configSettings);

Kotlin+KTX

val remoteConfig: FirebaseRemoteConfig = Firebase.remoteConfig
val configSettings = remoteConfigSettings {
    minimumFetchIntervalInSeconds = 3600
}
remoteConfig.setConfigSettingsAsync(configSettings)

싱글톤 객체는 인앱 기본 매개변수 값을 저장하고, 백엔드에서 업데이트된 매개변수 값을 가져오고, 가져온 값을 앱에서 사용할 수 있는 시기를 제어하는 ​​데 사용됩니다.

개발 중에는 최소 가져오기 간격을 상대적으로 낮게 설정하는 것이 좋습니다. 자세한 내용은 스로틀링을 참조하십시오.

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

앱이 원격 구성 백엔드에 연결되기 전에 의도한 대로 작동하고 백엔드에 아무것도 설정되지 않은 경우 기본값을 사용할 수 있도록 원격 구성 개체에서 인앱 기본 매개변수 값을 설정할 수 있습니다.

  1. 개체 또는 앱의 res/xml 폴더에 저장된 XML 리소스 파일을 사용하여 일련의 매개변수 이름 및 기본 매개변수 값을 정의합니다. 원격 구성 빠른 시작 샘플 앱은 XML 파일을 사용하여 기본 매개변수 이름과 값을 정의합니다.

    원격 구성 백엔드 매개변수 값을 이미 구성한 경우 모든 기본값을 포함하는 생성된 XML 파일을 다운로드하여 앱의 res/xml 디렉터리에 저장할 수 있습니다.

    쉬다

    curl --compressed -D headers -H "Authorization: Bearer token -X GET https://firebaseremoteconfig.googleapis.com/v1/projects/my-project-id/remoteConfig:downloadDefaults?format=XML -o remote_config_defaults.xml
    

    Firebase 콘솔

    1. 매개변수 탭에서 메뉴를 열고 기본값 다운로드를 선택합니다.

    2. 메시지가 표시되면 Android용 .xml을 활성화한 다음 파일 다운로드를 클릭합니다.

  2. 다음과 같이 setDefaultsAsync(int) 사용하여 원격 구성 객체에 이 값을 추가합니다.

    Java

    mFirebaseRemoteConfig.setDefaultsAsync(R.xml.remote_config_defaults);

    Kotlin+KTX

    remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)

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

이제 원격 구성 개체에서 매개변수 값을 가져올 수 있습니다. 백엔드에서 값을 설정하고 가져온 다음 활성화하면 해당 값을 앱에서 사용할 수 있습니다. 그렇지 않으면 setDefaultsAsync(int) 사용하여 구성된 인앱 매개변수 값을 가져옵니다. 이러한 값을 얻으려면 매개변수 키를 인수로 제공하여 앱에서 예상하는 데이터 유형에 매핑되는 아래 나열된 메소드를 호출하십시오.

5단계: 원격 구성 백엔드에서 매개변수 값 설정

Firebase 콘솔 또는 원격 구성 백엔드 API를 사용하여 원하는 조건부 논리 또는 사용자 타겟팅에 따라 인앱 값을 재정의하는 새 서버 측 기본값을 만들 수 있습니다. 이 섹션에서는 이러한 값을 생성하는 Firebase 콘솔 단계를 설명합니다.

  1. Firebase 콘솔 에서 프로젝트를 엽니다.
  2. 원격 구성 대시보드를 보려면 메뉴에서 원격 구성을 선택합니다.
  3. 앱에서 정의한 매개변수와 이름이 같은 매개변수를 정의합니다. 각 매개변수에 대해 기본값(결국 해당 인앱 기본값을 재정의함)을 설정할 수 있으며 조건부 값도 설정할 수 있습니다. 자세한 내용은 원격 구성 매개변수 및 조건을 참조하십시오.

6단계: 값 가져오기 및 활성화

  1. 원격 구성 백엔드에서 매개변수 값을 가져오려면 fetch() 메서드를 호출하세요. 백엔드에서 설정한 모든 값을 가져와서 원격 구성 객체에 저장합니다.
  2. 가져온 매개변수 값을 앱에서 사용할 수 있도록 하려면 activate() 메서드를 호출하세요.

    한 번의 호출로 값을 가져오고 활성화하려는 경우에는 fetchAndActivate() 요청을 사용하여 원격 구성 백엔드에서 값을 가져와 앱에서 사용할 수 있도록 할 수 있습니다.

    Java

    mFirebaseRemoteConfig.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        boolean updated = task.getResult();
                        Log.d(TAG, "Config params updated: " + updated);
                        Toast.makeText(MainActivity.this, "Fetch and activate succeeded",
                                Toast.LENGTH_SHORT).show();
    
                    } else {
                        Toast.makeText(MainActivity.this, "Fetch failed",
                                Toast.LENGTH_SHORT).show();
                    }
                    displayWelcomeMessage();
                }
            });

    Kotlin+KTX

    remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.result
                Log.d(TAG, "Config params updated: $updated")
                Toast.makeText(this, "Fetch and activate succeeded",
                    Toast.LENGTH_SHORT).show()
            } else {
                Toast.makeText(this, "Fetch failed",
                    Toast.LENGTH_SHORT).show()
            }
            displayWelcomeMessage()
        }

이러한 업데이트된 매개변수 값은 앱의 동작과 모양에 영향을 미치기 때문에 다음에 사용자가 앱을 열 때와 같이 사용자에게 원활한 경험을 제공할 수 있는 시간에 가져온 값을 활성화해야 합니다. 자세한 내용과 예시는 원격 구성 로딩 전략을 참조하세요.

쓰로틀링

앱이 단기간에 너무 많이 가져오면 가져오기 호출이 제한되고 SDK가 FirebaseRemoteConfigFetchThrottledException 반환합니다. SDK 버전 17.0.0 이전에는 한도가 60분 창에서 5개의 가져오기 요청이었습니다(최신 버전에는 더 많은 허용 한도가 있음).

앱을 개발하는 동안 앱을 개발하고 테스트하면서 빠르게 반복할 수 있도록 구성을 매우 자주(시간당 여러 번) 가져오고 활성화할 수 있습니다. 최대 10명의 개발자가 있는 프로젝트에서 빠른 반복을 수용하기 위해 앱에서 최소 가져오기 간격( setMinimumFetchIntervalInSeconds )이 낮은 FirebaseRemoteConfigSettings 개체를 일시적으로 설정할 수 있습니다.

원격 구성의 기본 최소 가져오기 간격은 12시간입니다. 즉, 실제로 수행된 가져오기 호출 수에 관계없이 12시간 창에서 두 번 이상 백엔드에서 구성을 가져오지 않습니다. 특히 최소 가져오기 간격은 다음 순서로 결정됩니다.

  1. fetch(long) 의 매개변수
  2. FirebaseRemoteConfigSettings.setMinimumFetchIntervalInSeconds(long) 의 매개변수
  3. 기본값 12시간

최소 가져오기 간격을 맞춤 값으로 설정하려면 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long) 사용하세요.

다음 단계

아직 보지 않았다면 원격 구성 사용 사례를 살펴보고 다음과 같은 몇 가지 주요 개념 및 고급 전략 문서를 살펴보세요.