Firebase 내에 Remote Config라는 기능이 존재합니다. 이를 활용하여 업데이트될 필요가 있는 정적 데이터에 대해 서버 없이 저장할 수 있습니다.
초기화
앱내에 remote_config_defaults.xml을 만들어줍니다. 파일 존재 이유는 아래서 다시 설명하겠습니다. 경로는 res > xml에 생성합니다.
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
</defaultsMap>
Application 클래스 onCreate() 함수 부분에 다음과 같이 초기화를 해줍니다.
class MyAppApplication : android.app.Application() {
override fun onCreate() {
super.onCreate()
Firebase.remoteConfig.run {
setDefaultsAsync(R.xml.remote_config_defaults)
fetchAndActivate()
}
}
}
매개변수 추가
많은 앱들의 설정 화면에서 최신 앱 버전 정보가 표시되는 것을 볼 수 있습니다.
예제에서는 해당 화면에 표시되는 버전 정보를 Remote Config로 관리한다고 가정하겠습니다. Firebase 콘솔에서 다음과 같이 매개변수를 추가해줍니다.
아까 생성해둔 remote_config_defaults.xml 에 생성해둔 매개변수를 추가해둡니다. 이 파일의 역할은 해당 매개변수의 기본값을 의미합니다. 인터넷이 연결이 되지 않았거나 초기에 앱을 설치한 후, 아직 값을 Firebase로부터 받아오지 못했을 때 해당 값을 참조합니다. 이 파일은 항상 Firebase 콘솔에 정의해둔 매개변수와 일치해야 합니다.
<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>latest_app_version</key>
<value>1.1.0</value>
</entry>
</defaultsMap>
사용하기
Remote Config를 편리하게 쓰기 위해서 유틸 클래스를 하나 생성해주도록 합니다. Util이므로 싱글톤을 유지하기 위해 class가 아닌 object로 생성합니다.
object FirebaseRCUtils {
fun getBoolean(parameters: Parameters): Boolean {
return Firebase.remoteConfig.getBoolean(parameters.key)
}
fun getLong(parameters: Parameters): Long {
return Firebase.remoteConfig.getLong(parameters.key)
}
fun getString(parameters: Parameters): String {
return Firebase.remoteConfig.getString(parameters.key)
}
fun getValue(parameters: Parameters): FirebaseRemoteConfigValue {
return Firebase.remoteConfig.getValue(parameters.key)
}
enum class Parameters(val key: String) {
LATEST_APP_VERSION("latest_app_version")
// 새로운 매개변수들은 이쪽에 추가...
}
fun getLatestAppVersion() =
getString(Parameters.LATEST_APP_VERSION)
}
이러한 방식으로 코딩했을 때 enum class인 Parameters 내에서 매개변수 키값들을 관리하기 때문에 직관적이고 다른 개발자가 쉽게 사용할 수 있습니다.
아래와 같이 필요할 때마다 호출하여 사용합니다.
FirebaseRCUtil.getLatestVersion() // 1.1.0
'Android' 카테고리의 다른 글
RxBus - Rxjava로 전역 callback으로 구현하기 (0) | 2021.12.08 |
---|---|
Activity / Fragment ViewBinding Boilerplate Class (0) | 2021.12.05 |
Google Admob 보상형 광고 적용 및 최적화 하기 (0) | 2020.05.04 |
Google Admob 광고 사용하기 (0) | 2020.05.04 |