제이슨의 개발이야기

Firebase RemoteConfig 이용해보기! Android with Coroutin , viewPager2 이용 본문

안드로이드

Firebase RemoteConfig 이용해보기! Android with Coroutin , viewPager2 이용

제이쓰은 2021. 6. 3. 15:25
728x90
반응형

안녕하세요 오늘은 Firebase RemoteConfig 에 대해서 공부해봤습니다!

 

해당 글은 파이어베이스 기본 세팅에 대해서는 생략하겠습니다

 

Firebase RemoteConfig 란 앱에서 별도의 업데이트를 하지 않아도  앱의 동작과 모양을 변경할 수 있는 클라우드 서비스입니다. 

 

예를 들면 앱 화면에 특정 문자열이 있는대 이 문자열을 하루에 한번씩 바꾸고 싶을때 매일매일 해당 앱 서비스를 업데이트 할 수 는 없습니다! 이럴 때 Firebase RemoteConfig 를 이용하면 하루에 한번씩 내가 원하는 문자열을 추가 해주면 전체 앱 사용자 혹은 전체 사용자 중 일부만 이전 문자열을 새로운 문자열로 교체 할 수 있습니다! 

잘만 이용한다면 굉장히 유용한 기능인거같습니다 ㅎㅎ 

 

RemoteConfig 를 이용하는 실제 예로는 

 

저는 공부용 프로젝트로 파이어베이스 에 스토리지에 저장되어 있는 이미지 url 을 미리 넣어두고 읽어 들여서 화면에 뷰페이저로 보여지는 간단한 프로젝트를 진행해 봤습니다

 

 

일단 파이어베이스 프로젝트를 세팅 하고 나서 

 

build.glide app단 에서 

    implementation 'com.google.firebase:firebase-config-ktx'
    implementation 'com.google.firebase:firebase-analytics-ktx'

을 추가해줍니다! 

implementation 'com.google.firebase:firebase-config-ktx' 는 remoteConfig를 위한 종속성이고
implementation 'com.google.firebase:firebase-analytics-ktx' 는 나중에 파이어 베이스에서 대쉬보드를 통해 파이어베이스 가 제공하는(firestore , function 등등) 서비스 상태를 확인할 수 있는 종속성입니다

 

그리고 콘솔창에서 왼쪽에 

 

 

여기에서 Remote Config를 눌러줍니다!

 

Remote Config 페이지로 넘어와서 화면에서 {} 을 눌러서 매개변수에 추가할 데이터를 입력해줍니다

 

데이터 형식은 JSON 형식으로 입력 해주셔야 합니다! 

저 같은 경우

으로 입력했습니다! 각 3개의 path는 이미지가 저장되어있는 url 주소 입니다

다음에 안드로이드 프로젝트로 넘어와서 

 

메인 엑티비티 에서 

 

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        CoroutineScope(Dispatchers.Main).launch {
            var list =  initData()
            var viewPager = findViewById<ViewPager2>(R.id.viewpager)
            var adapter = viewPagerAdapter(list,applicationContext)
            viewPager.adapter = adapter

        }


    }

suspend  fun initData() : ArrayList<String>{
    var list = ArrayList<String>()
    var remoteConfig = Firebase.remoteConfig

    remoteConfig.setConfigSettingsAsync(
            remoteConfigSettings {
                minimumFetchIntervalInSeconds = 0
            }
    )
//    remoteConfig.setDefaultsAsync()
    remoteConfig.fetchAndActivate().addOnCompleteListener {
        if(it.isSuccessful){
            list = parsingJson(remoteConfig.getString("main"))
        }
    }.addOnFailureListener {

    }.await()
    return list
}

     fun parsingJson(json : String) :ArrayList<String>{
        val jsonArray = JSONArray(json)
         var list = ArrayList<String>()
        for(index in 0 until jsonArray.length()){
            val jsonObject = jsonArray.getJSONObject(index)
            jsonObject?.let{
                list.add(it.getString("path"))
            }
        }
            return list;
    }
}

 

initData() 메소드를 처음에 실행해서 RemoteConfig에서 JSON파일을 읽어들입니다

 

처음에 remoteConfig.setConfigSettingsAsync() 부분은 remoteConfig 에 Setting 을 하는 부분입니다

 

minimumFetchIntervalInSeconds = 0     은 Fetch 하는 인터벌 을 정하는 부분입니다 

 

remoteConfig을 통해서 한번 가저온 데이터는 인터벌로 정한 시간 동안 다시 가저 오지않습니다 

 

파이어베이스는 앱에서 단기간에 가져오기를 너무 많이 수행하면 가져오기 호출이 제한되고 SDK는 FirebaseRemoteConfigFetchThrottledException을 반환합니다. 60분동안 5개 이상 호출하게 되면 block됩니다!

그래서 보통 그것을 방지하기 위해 인터벌 시간을 적어도 60분이상 주는 경우가 대부분입니다

저같은 경우 테스트를 위해서 0으로 했고 실제 서비스를 개발할때는 60분이상 즉 3600 이상 부여하는것을 추천합니다

기본값은 12시간입니다!

 

https://firebase.google.com/docs/remote-config/use-config-android?hl=ko 

 

Android에서 Firebase 원격 구성 시작하기

Firebase 원격 구성으로 클라우드에서 앱의 매개변수를 정의하고 값을 업데이트하면 앱 업데이트를 배포하지 않고도 앱의 모양과 동작을 수정할 수 있습니다. 이 가이드에서는 시작하는 단계를

firebase.google.com

 

코드를 보면 주석으로 

// remoteConfig.setDefaultsAsync()

된 부분이 있습니다  이 부분은 매개변수를 지정하지 않을 경우 default 값을 부르는 메소드 입니다

저같은 경우 이 부분을 생략했지만 보통 실제 서비스를 개발 하시는 분들은 Default 인 경우 따른 세팅도 같이 합니다! 

 

그리고 앱이 시작하면서 remoteConfig.fetchAndActivate().addOnCompleteListener 을 통해서 비동기 방식으로 

데이터를 가저옵니다 ! 해당 데이터는 JSON으로 오기 때문에 JSON을 자신이 원하는 형식으로 변환이 필요합니다 ! 

먼저 remoteConfig.getString("Keyname") 을 통해 JSONArray 데이터를 받습니다 Keyname은 매개변수 지정할때 매개변수 key를 의미합니다

그 다음에 이것을 JSON으로 변환 후 getString("path")을 통해 원하는 값을 파싱했습니다

 

이런식으로 remoteConfig 을 이용해서 데이터를 받을 수 있습니다 !

 

해당 코드는 remoteConfig 뿐만 아니라 Coroutin 과 ViewPager2 을 이용해서 프로젝트를 진행 했는대 

두가지에 대한 설명은 생략하겠습니다!

 

혹시 코루틴에 대해 알고 싶다면 아래에 링크로 가시면 배울 수 있습니다

 

https://jason-api.tistory.com/38

 

[안드로이드 코틀린] 코루틴을 이용해서 파이어베이스 동기 처리하기!

안녕하세요 오늘은 코루틴을 이용해서 파이어스토어 접근할때 동기식으로 처리하는 방법에 대해서 공부하고자 합니다 ! 일단 동기 비동기 에 대해 잘 모르시는 분들은 jason-api.tistory.com/23 프로

jason-api.tistory.com

https://jason-api.tistory.com/25

 

[안드로이드 코틀린] 코루틴을 이용해서 간단한 okhttp 통신

오늘은 코루틴을 이용해서 okhttp통신을 하는 방법을  매우매우  [간단] 하게 블로그에 적어보자 합니다 부족하지만 블로그 내용을 보고 코루틴을 이용한 http 통신을 하는 원리를 알아갔으면

jason-api.tistory.com

 

전체 코드를 보고 싶다면 아래에 깃헙을 이용해주세요!

 

https://github.com/jaeilssss/AndroidStudy/tree/main/remoteConfigProject

 

jaeilssss/AndroidStudy

안드로이드 간단 공부 프로젝트 모음. Contribute to jaeilssss/AndroidStudy development by creating an account on GitHub.

github.com

728x90
반응형