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) 를 사용하세요.

Next steps

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: