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

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

필수 조건

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

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

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

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

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

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

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

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

빠른 시작 샘플 빌드 및 실행

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

작동 원리

샘플은 우선 원격 구성 개체 인스턴스를 가져오고 캐시를 빈번하게 새로고칠 수 있도록 개발자 모드를 사용 설정합니다.

자바
Android

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

Kotlin
Android

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

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

자바
Android

mFirebaseRemoteConfig.setDefaults(R.xml.remote_config_defaults);

Kotlin
Android

remoteConfig.setDefaults(R.xml.remote_config_defaults)

이제 샘플은 원격 구성 서버에서 값을 가져오는 fetch() 요청을 만들고 activateFetched()를 호출하여 해당 값을 앱에 적용합니다.

자바
Android

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
mFirebaseRemoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this, new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if (task.isSuccessful()) {
                    Toast.makeText(MainActivity.this, "Fetch Succeeded",
                            Toast.LENGTH_SHORT).show();

                    // After config data is successfully fetched, it must be activated before newly fetched
                    // values are returned.
                    mFirebaseRemoteConfig.activateFetched();
                } else {
                    Toast.makeText(MainActivity.this, "Fetch Failed",
                            Toast.LENGTH_SHORT).show();
                }
                displayWelcomeMessage();
            }
        });

Kotlin
Android

// cacheExpirationSeconds is set to cacheExpiration here, indicating the next fetch request
// will use fetch data from the Remote Config service, rather than cached parameter values,
// if cached parameter values are more than cacheExpiration seconds old.
// See Best Practices in the README for more information.
remoteConfig.fetch(cacheExpiration)
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                Toast.makeText(this, "Fetch Succeeded",
                        Toast.LENGTH_SHORT).show()

                // After config data is successfully fetched, it must be activated before newly fetched
                // values are returned.
                remoteConfig.activateFetched()
            } else {
                Toast.makeText(this, "Fetch Failed",
                        Toast.LENGTH_SHORT).show()
            }
            displayWelcomeMessage()
        }

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

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

자바
Android

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
Android

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"
}

캐싱 및 제한

원격 구성은 값을 최초로 가져온 후 로컬 캐시에 저장합니다. 캐시는 기본적으로 12시간 후에 만료되지만, fetch 메소드에 원하는 캐시 만료 시간을 전달하여 가져온 특정 값의 캐시 만료 시간을 변경할 수 있습니다. 캐시의 값이 원하는 캐시 만료 시간보다 오래된 경우 원격 구성은 새 구성 값을 서비스에 요청합니다. 앱이 fetch를 여러 번 사용하여 새 값을 요청하면 요청에 제한이 걸려 앱에 캐시된 값이 제공됩니다.

앱 개발 중에는 개발 주기를 빠르게 반복하고 앱을 테스트하기 위해 캐시를 매우 빈번하게(1시간에 몇 번씩) 새로고침해야 합니다. 최대 10명의 개발자가 참여하는 프로젝트에서 개발 주기를 빠르게 반복하려는 경우 isDeveloperModeEnabledtrue로 설정한 FirebaseRemoteConfigSettings 객체를 앱에 임시로 추가하여 FirebaseRemoteConfig 객체의 캐싱 설정을 변경할 수 있습니다.

다음 단계

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

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.