seoft

[Android] firebase 없이 원격 구성(Remote Config) 설정하기 본문

android

[Android] firebase 없이 원격 구성(Remote Config) 설정하기

seoft 2020. 8. 22. 21:33

[AndroidRemoteConfig 개요]

 

혹시 이런 상황 겪으신적 없으신가요

 

1. 앱에 연동된 서버가 특정 이유로 사용할 수 없어 사용자에게 공지를 노출해야 할 경우

2. 앱의 특정 버전에 치명적인 버그가 발생하여 특정버전 이하 사용자를 강제업데이트 시켜야 할 경우

 

위의 상황에 대비해서 앱을 제작하는 과정에 특정정보를 받아 처리하는 로직을 사전에 구현해야합니다.

 

 

이런경우 보통 firebase의 remote config를 사용하는데,

 

사용할 스팩이 위와 같이 단순한데 firebase console까지 구축하고 연동하는 번거로움 혹은 firebase의 remote config 제한 스팩보다 더 자유롭게 사용이 필요한 경우 자체적인 remoteConfig가 필요할 수 있습니다.

 

 

저 같은 경우에는 24시간, 365일 가동하는 서버에 앱 구동시 remoteConfig를 요청해서 받아 온 후 처리하는 방식을 저는 사용하는데

 

개인 서버가 있지만 24시간, 365일 가동을 보장하지 못해서 github의 public repository에 remoteConfig관련 정보를 올리고 그걸 받아서 사용합니다.

 

다음과 같이요.. -> https://github.com/seoft/always

 

 

앱이 구동될때 해당 주소의 json을 요청해서 처리하고 있고, 서버가 갑자기 죽어버리는 경우 등에 GitHub에 올라와 있는 json내용을 고쳐서 RemoteConfig로 이용하고있습니다. (변경시 5분정도의 캐싱시간이 적용되더라구요..)

 

 

이렇게 하면 간단한 RemoteConfig 서버로 적당하게 이용 될 것 같습니다. GitHub서버가 가 죽어버리지않는이상...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이런 코드를 토이 프로젝트에다가 반복해서 넣다보니 그냥 라이브러리로 하나 만들면 좋겠다고 생각하고 실천에 나섰습니다..

 

[AndroidRemoteConfig 소개]

 

https://github.com/seoft/AndroidRemoteConfig

 

seoft/AndroidRemoteConfig

Contribute to seoft/AndroidRemoteConfig development by creating an account on GitHub.

github.com

앞서말한 remoteConfig의 규약을 json으로 정의하여 특정 서버에 올려두고, 클라이언트에서는 간단하게 특정 서버 주소만 기입하여 조건에 따른 콜백을 받을 수 있게 구현하였습니다.

 

 

모듈을 받아오기위해 사전에 gradle 세팅이 필요합니다.

 

그다음 위과 같은 json을 github에 미리 올려두고

 

 

해당 github의 raw code 주소를 통해 ProcessRemoteConfig 객체를 하나 생성합니다

 

마지막으로 builder 패턴에 의해 생성된 ProcessRemoteConfig 객체에서 리스너를 정의해주면 됩니다.

 

 

그럼 해당 로직이 실행될때 json을 읽고 비동기로 콜백을 주게 되는데 상세하게

1. 실행유무
2. 출력 메세지
3. 특정 버전보다 낮을경우의 콜백을 울릴 버전
4. 기타 내용

위의 네가지를 비교하여 적당한 콜백함수를 호출하는 구조입니다.

 

 

21.3.29) 0.9.2 버전에 RxJava도 지원 할 수 있도록 수정하였는데요, 다음 예시 코드를 참고바랍니다.

 

 

setup 과정이나 생성 패턴, 콜백 설명 등 자세한건 github repo를 참조 부탁드립니다.

https://github.com/seoft/AndroidRemoteConfig

 

seoft/AndroidRemoteConfig

Contribute to seoft/AndroidRemoteConfig development by creating an account on GitHub.

github.com

감사합니다.

Comments