콘솔로 이동

Firebase 원격 구성 Android 샘플 앱 둘러보기

이 가이드에서는 Android 앱에 원격 구성을 통합하는 방법을 단계별로 알아보겠습니다. Android용 원격 구성 API의 자세한 내용은 com.google.firebase.remoteconfig를 참조하세요.

요구사항

Android 프로젝트에 Firebase 추가에서 제공하는 안내에 따라 프로젝트를 설정합니다.

다음으로, 앱 모듈의 build.gradle에 다음 종속 항목을 추가합니다.

    implementation 'com.google.firebase:firebase-config:18.0.0'

빠른 시작 샘플용 원격 구성 프로젝트 만들기

빠른 시작 샘플은 원격 구성을 사용하여 샘플 앱의 환영 메시지를 정의하는 것을 보여 줍니다. 빠른 시작 샘플을 실행을 위해서는 우선 원격 구성 프로젝트를 설정해야 합니다.

Firebase Console에서 새 프로젝트 만들기를 클릭하고 안내에 따라 다음 매개변수를 사용하여 Firebase 원격 구성 프로젝트를 설정합니다.

매개변수 키 기본값 참고사항
welcome_message Welcome to this sample app 다른 환영 메시지를 사용하려면 변경합니다.
welcome_message_caps false 환영 메시지가 모두 대문자로 표시되도록 하려면 true로 설정합니다.

프로젝트를 구성한 후 빠른 시작 샘플을 실행하여 Firebase Console에서 정의한 환영 메시지를 확인합니다. 프로젝트에서 이 매개변수의 값을 변경하고 빠른 시작 샘플에서 원격 구성 가져오기를 탭하면 원격 구성을 통해 앱이 업데이트되는 것을 확인할 수 있습니다.

빠른 시작 샘플 빌드 및 실행

  1. 빠른 시작 샘플 코드를 다운로드하고 압축을 풉니다.
  2. Android 스튜디오를 엽니다.
  3. 파일 > 열기를 선택하고 샘플 코드의 압축을 푼 위치로 이동한 후 구성 폴더를 엽니다.
  4. 샘플을 빌드하고 실행합니다.

작동 방식

샘플이 원격 구성 객체 인스턴스를 불러온 뒤 가져오기 간격을 최솟값으로 설정하여 상시적으로 새로고침을 할 수 있도록 합니다.

자바

mFirebaseRemoteConfig = FirebaseRemoteConfig.getInstance();FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .setMinimumFetchIntervalInSeconds(3600)
        .build();
mFirebaseRemoteConfig.setConfigSettings(configSettings);

Kotlin

remoteConfig = FirebaseRemoteConfig.getInstance()val configSettings = FirebaseRemoteConfigSettings.Builder()
        .setDeveloperModeEnabled(BuildConfig.DEBUG)
        .setMinimumFetchIntervalInSeconds(4200)
        .build()
remoteConfig.setConfigSettings(configSettings)

그런 다음 XML 파일에서 인앱 기본값을 설정합니다.

자바

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin

remoteConfig.setDefaults(R.xml.remote_config_defaults)

이제 샘플은 원격 구성 백엔드에서 값을 가져와 앱에서 사용할 수 있도록 fetchAndActivate() 요청을 만듭니다.

자바

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

remoteConfig.fetchAndActivate()
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                val updated = task.getResult()
                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()
        }

콜백에 전달된 FirebaseRemoteConfig 객체에서 사용 가능한 get<type> 메소드 중 하나(예: getLong)를 호출하여 구성 값에 액세스할 수 있습니다.

이제 환영 메시지가 업데이트되었으므로 앱에서 업데이트된 환영 메시지를 표시할 수 있습니다.

자바

private void displayWelcomeMessage() {
    String welcomeMessage = mFirebaseRemoteConfig.getString(WELCOME_MESSAGE_KEY);
    if (mFirebaseRemoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)) {
        mWelcomeTextView.setAllCaps(true);
    } else {
        mWelcomeTextView.setAllCaps(false);
    }
    mWelcomeTextView.setText(welcomeMessage);
}

Kotlin

private fun displayWelcomeMessage() {
    val welcomeMessage = remoteConfig.getString(WELCOME_MESSAGE_KEY)
    welcomeTextView.isAllCaps = remoteConfig.getBoolean(WELCOME_MESSAGE_CAPS_KEY)
    welcomeTextView.text = welcomeMessage
}

companion object {

    private const val TAG = "MainActivity"

    // Remote Config keys
    private const val LOADING_PHRASE_CONFIG_KEY = "loading_phrase"
    private const val WELCOME_MESSAGE_KEY = "welcome_message"
    private const val WELCOME_MESSAGE_CAPS_KEY = "welcome_message_caps"
}

제한

앱에서 짧은 시간 동안 가져오기를 너무 많이 수행하면 가져오기 호출이 제한될 수 있습니다. 이러한 경우 SDK는 FirebaseRemoteConfigFetchThrottledException을 반환합니다.

앱 개발 중에는 잦은 앱 개발 및 테스트 반복의 빠른 실행을 위해서 구성 가져오기와 활성화를 매우 빈번하게(한 시간에 몇 번씩) 해야 할 수 있습니다. 이에 개발자가 최대 10명인 프로젝트의 경우, 개발 및 테스트의 빠른 반복을 위해 앱 FirebaseRemoteConfigSettings 객체의 가져오기 간격을 최솟값(setMinimumFetchIntervalInSeconds)으로 임시 설정할 수도 있습니다.

원격 구성의 가져오기 간격 최솟값은 12시간(기본값)입니다. 즉, 실제로 발생하는 가져오기 호출 수에 관계없이 12시간 동안 백엔드에서 구성을 두 번 이상 가져올 수 없습니다. 가져오기 간격 최솟값은 구체적으로 다음과 같은 순서로 결정됩니다.

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

가져오기 간격 최솟값을 커스텀 값으로 설정하려면 FirebaseRemoteConfigSettings.Builder.setMinimumFetchIntervalInSeconds(long)를 사용하세요.

다음 단계

빠른 시작 샘플을 사용하고 API 작동 방식을 파악했다면, 이제 원격 구성 업데이트의 실시간 전파 및 REST API 사용과 같은 고급 원격 구성 주제를 검토할 수 있습니다. 다음 리소스를 참조하세요.