-
안드로이드 코틀린 : 파이어베이스 리모트 컨피그 ( Firebase Remote Config )프로그래밍/Android(Kotlin) 2020. 6. 28. 20:57반응형
안녕하세요, 랴파파입니다.
오늘은 파이어베이스의 리모트 컨피그라는 기능을 사용해서
아래와 같은 프로그램을 만들어 볼 예정입니다.
이 기능을 사용하면 어플을 다운로드하여 사용하는 유저들에게
새로 나온 버전으로 업데이트 유도하기가 쉽습니다.
Remote Config를 적용한 예제 프로그램 화면 1. 파이어베이스 리모트 컨피그 ( Firebase Remote Config ) 설정
연동한 Firebase Console에서의 Remote Config 설정 화면 먼저 위의 그림과 같이 Firebase Console에서 Remote Config 설정 화면을 찾아 위와 같이 설정을 합니다. "message_version"의 의미는 이번에 업데이트를 끝내고 막 배포한 앱의 새로운 버전이라고 생각하시면 됩니다. 이전의 버전은 0.0.1이었던 것이죠.
2. 라이브러리 ( Library ) 추가
먼저 build.gradle(Module:app) >에서 아래의 사진과 같이 < implementation 'com.google.firebase:firebase-config-ktx:19.0.0' > 입력하시고 오른쪽 상단에 표시되는 < Sync Now >를 눌러서 Firebase Remote Config를 사용할 수 있도록 설정해주시기 바랍니다.
Firebase Remote Config Library를 추가한 dependencies의 화면 3. 앱 버전 ( App Version ) 설정
build.gradle(Module:app) >에서 추가로 아래와 같이 "versionName"을 설정해주시기 바랍니다.
android { compileSdkVersion 29 defaultConfig { ... minSdkVersion 21 targetSdkVersion 29 multiDexEnabled true versionCode 1 versionName "0.0.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } ... }
4. 레이아웃 ( Layout ) 구성
가장 맨 위의 예제 프로그램의 화면과 같은 메시지 창을 띄워주기 위해서는 어플을 실행하여 가장 먼저 나오는 화면에서 버전을 확인하는 것이 가장 효율적이라고 생각을 해서 SplashActivity를 만들어서 가장 먼저 실행되도록 설정하였습니다. 레이아웃은 간단하게 아래와 같은 디자인으로 먼저 구성했습니다.
activity_splash.xml 의 레이아웃 디자인 해당 레이아웃 디자인에 대한 XML Code는 아래와 같습니다.
파일명 : activity_splash.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".SplashActivity"> <ImageView android:id="@+id/xml_img_splash_app-main-image" android:layout_gravity="center" android:layout_marginTop="100dp" android:layout_width="200dp" android:layout_height="200dp" /> <TextView android:text="앱 버전을 확인하는 중입니다." android:layout_gravity="center" android:layout_marginTop="50dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/xml_txt_splash_app-version" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:layout_marginTop="50dp" android:text="1.0.0" /> </LinearLayout>
5. 코틀린 소스코드 ( Kotlin Source Code ) 구성
지금부터는 SplashActivity.kt ( Kotlin Source Code )를 함수 별로 정의해서 확인해보도록 하겠습니다.
// Get App Version fun fun_GetAppVersion() : String{ val packageManager = this.packageManager return packageManager.getPackageInfo(this.packageName, PackageManager.GET_ACTIVITIES).versionName }
첫 번째로 구성한 fun_GetAppVersion 함수는 3번 항목에서 설정한 앱 버전을 build.gradle(Module:app) >에서 읽어오도록 합니다.
// Firebase Remote Config fun fun_DialogDisplay(firebaseRemoteConfig : FirebaseRemoteConfig) { val strVersionName = fun_GetAppVersion() // Version from App var strLatestVersion = firebaseRemoteConfig.getString("message_version") // Version from Firebase if (strVersionName != strLatestVersion) { AlertDialog.Builder(this) .setTitle("Update") .setMessage("최신 버전의 앱을 설치 후 재실행 해주시기 바랍니다.") .setCancelable(false) .setPositiveButton("OK", DialogInterface.OnClickListener { dialogInterface, i -> this.finish() }).show() } else{ startActivity(Intent(this, LoginActivity::class.java)) this.finish() } }
두 번째로 구성한 fun_DialogDisplay는 1번 항목에서 설정한 Firebase Console의 정의한 앱 버전과 build.gradle(Module:app) >에서 읽어온 앱 버전의 동일 유무를 확인합니다. 동일하지 않은 경우 예제 프로그램과 같이 알림 창을 띄우며 알림 창의 확인 버튼을 누르면 앱을 종료시키도록 합니다. 앱 버전이 동일한 경우는 그다음 액티비티 ( LoginActivity )로 넘어가도록 되어 있습니다.
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash) // App Version Display on Splash Page xml_txt_splash_app_version.setText(fun_GetAppVersion()) // Firebase Remote Config val firebaseRemoteConfig = FirebaseRemoteConfig.getInstance() firebaseRemoteConfig.fetch(0).addOnCompleteListener { task -> if(task.isSuccessful){ firebaseRemoteConfig.fetchAndActivate() fun_DialogDisplay(firebaseRemoteConfig) } else{ AlertDialog.Builder(this) .setTitle("Error") .setMessage("앱을 실행하는데 오류가 발생하였습니다. 다시 시도해주시기 바랍니다.") .setCancelable(false) .setPositiveButton("OK", DialogInterface.OnClickListener { dialogInterface, i -> this.finish() }).show() } } }
onCreate 내부 부분에서 구성한 부분은 Firebase Remote Config 부분의 초기화 부분입니다. 만일 초기화가 성공적으로 끝나지 않는 경우 앱을 종료시키도록 유도하였습니다.
이것으로 오늘은 Firebase Remote Config를 사용한 예제 프로그램을 살펴봤습니다.
오늘 글도 여러분께 많은 도움이 됐기를 희망합니다.
감사합니다!
반응형'프로그래밍 > Android(Kotlin)' 카테고리의 다른 글
안드로이드 코틀린 : SharedPreferences (1) 2020.07.03 안드로이드 코틀린 : 파이어베이스 페이스북 로그인 ( Firebase Authentication : Facebook Login ) (1) 2020.07.01 안드로이드 코틀린 : 파이어베이스 구글 로그인 ( Firebase Google Login ) (1) 2020.06.30 안드로이드 코틀린 : 프래그먼트 ( Fragment ) & Bottom Navigation View (1) 2020.06.29 안드로이드 코틀린 : 리사이클러뷰 ( RecyclerView ) (1) 2020.06.23