반응형

이번 포스팅에서는 정책 서버가 없는 가난한 앱발자들을 위한 Firebase의 

Remote Config에 대해 작성하고자 한다.



백문이 불어일견.... 먼저 Remote Config 적용시 처리할 수 있는 결과에 대해 아래 사진으로 대신 한다.


이번 포스팅을 성실히 따라온다면, 여러분은 정책 서버 없이도 정책 관리가 용이한 하나의 방법을 터득하게 된다.


그럼 이제 시작 하도록 한다.



먼저, 다음의 링크를 통해 Firebase 콘솔에 접근한다. 로그인된 콘솔에서 지난번 포스팅에서 생성한 프로젝트 클릭. 

(지난 포스팅 참조 - [Android] Firebase 기본 설정)



해당 프로젝트 콘솔에 진입하게 되면, 좌측 하단에 'Remote Config' 항목이 보일 것이다. 해당 항목 클릭.





그림의 '첫 번째 매개변수 추가' 버튼 클릭



매개 변수 항목 작성 (좌측은 필드 명, 우측엔 필드 값을 작성)



다음과 같이 추가가 완료 된다.



추가가 완료 되었다면, 우측 상단에 '변경사항 게시' 버튼 클릭



추가로 출력되는 팝업에서 우측에 '변경사항 게시' 클릭



여기까지 따라왔다면 여러분은 80%는 작업이 완료되었다고 생각해도 무방하다.

지금까지의 작업은 서버의 정책 처리 작업이었다면, 다음에 기술하는 내용은 단말에서 처리하는 작업이다.




먼저 앱 수준의 build.gradle에 다음과 같이 라이브러리르 추가한다.

dependencies {
...
// RemoteConfig 라이브러리 추기
implementation 'com.google.firebase:firebase-config:16.0.1'
}
apply plugin: 'com.google.gms.google-services'


res 폴더 내 xml 폴더를 추가하고, 'remote_default_configs.xml 파일을 생성하여 다음의 필드를 추가한다.

<?xml version="1.0" encoding="utf-8"?>
<defaultsMap>
<entry>
<key>splash_message_caps</key>
<value>false</value>
</entry>
<entry>
<key>splash_message</key>
<value>점검중 입니다.</value>
</entry>
</defaultsMap>


MainActivity에 다음의 코드를 작성한다.

package com.ktops.fcmtest

import android.os.Bundle
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.widget.Toast
import com.crashlytics.android.Crashlytics
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
import io.fabric.sdk.android.Fabric

class MainActivity : AppCompatActivity() {

// lateinit 처리하여 FirebaseRemoteConfig 타이밍을 조정합니다.
private lateinit var remoteConfig: FirebaseRemoteConfig
private val FIREBASE_FETCH_TIME: Long = 0

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
init()
}

fun init() {
initCrashlytics()
initRemoteConfig()
}

fun initCrashlytics() {
// Crashlytics 초기화
Fabric.with(this, Crashlytics())
}

fun initRemoteConfig() {
// remoteconfig 초기화 및 기본 설정
remoteConfig = FirebaseRemoteConfig.getInstance()
val configSettings = FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(BuildConfig.DEBUG)
.build()
remoteConfig.setConfigSettings(configSettings)
remoteConfig.setDefaults(R.xml.remote_default_configs)
fetchAction()
}

fun fetchAction() {
// remoteconfig 데이터 로딩
remoteConfig.fetch(FIREBASE_FETCH_TIME)
.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()
}
}

fun displayWelcomeMessage() {
// remoteconfig 데이터에 따른 alertDialog 출력
val caps: Boolean = remoteConfig.getBoolean("splash_message_caps")
val splashMessage: String = remoteConfig.getString("splash_message")
val builder: AlertDialog.Builder = AlertDialog.Builder(this)
if (caps) {
builder.setMessage(splashMessage).setPositiveButton("확인") { dialog, which -> finish() }
builder.create().show()
}
}
}



이렇게 하면 상단에 첨부그림 처럼 정책에 따른 팝업 처리가 용이하다.

이번 포스팅에서는 단순 팝업 처리에 대해서만 진행하였으나, 향후 여러분이 Activity의 Style 처리, 특정 기능의 제한 등의 정책 전반의 심화 기능을 적용하는 경우에 요긴하게 사용 가능하니, 앱 개발을 하는 가난한 개발자 누구라도 Firebase를 한번씩 학습하는 것을 추천하며, 이번 포스팅을 마치도록 한다.

반응형

+ Recent posts