[Android] Firebase 원격 구성을 이용한 앱 버젼 관리

in kr •  5 years ago  (edited)

Android 앱에서 앱 버젼 체크 후 버젼이 낮다면,
구글 스토어 페이지로 연결하는 것을 구현 하려면,
구글 스토어에 있는 앱버젼을 가져오고, 버젼 비교 후
스토어 페이지로 링크해주는 형태로 구현하면 됩니다.

구글 스토어의 앱버젼을 얻어내는 두가지 방법


1. goolge play store page를 호출하여 version에 대한 부분만 파싱한다.

https://play.google.com/store/apps/details?id=<app id>&hl=en

  • 장점 : 따로 API를 구성하지 않아도 된다.
  • 단점 : 해당 페이지 구조가 변경 될때 마다 parsing을 새로이 구현해주어야 한다.

2. version을 얻어내는 api를 구성한다.

  • 장점 : store page 호출 파싱에 비해 안정적이다.
  • 단점 : 따로 api를 구성해야하며, app version을 따로 관리해주어야 한다.

안전성을 위해서 앱버젼을 얻어내는 api를 구성하는 게 좋다고 생각합니다.
이때, 따로 API를 만들지 않아도 되는 방법이 있는데,
Firebase Remote Config 를 이용하는 것입니다.

Firebase Remote Config란?


Firebase Remote Config는 비개발자들이
코드 수정없이, data 수정만을 통해서,
유지보수를 하거나 테스팅 수행할 목적으로 만들어 졌습니다.

이것을 이용해서 firebase console에 앱 version 관련 필드를 생성 하면, 버젼 관리 API를 따로 만들지 않아도,
앱의 최신 버젼이 어떤 것인지를 얻어올 수 있습니다.

설치 방법

gradle에 다음 종속성을 추가해줍니다.

implementation 'com.google.firebase:firebase-config:16.5.0'

firebase library 간 버젼 종속성이 있기때문에,
firebase를 설치할 때는 AndroidStudio에 있는 Firebase Assistant를 이용해주면 좋습니다.

Firebase Assistant

데이터 설정

Firebase 페이지에 들어가셔서 Remote Config에서 매개변수 추가 후 변경사항 게시를 해주시면 됩니다.
저는 android_latest_version_code라고 앱 변수이름을 짓고 app version code값을 입력해 주었습니다.

Firebase Remote Config

코드

public void fetchPlayStoreAppVersionCode(final FetchPlayStoreAppVersionCodeCallback callback) {
    if (FirebaseApp.getApps(this).isEmpty())
        FirebaseApp.initializeApp(this, FirebaseOptions.fromResource(this));

    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
            .setDeveloperModeEnabled(BuildConfig.DEBUG)
            .setMinimumFetchIntervalInSeconds(3600)
            .build();
    config.setConfigSettings(configSettings);
    config.fetchAndActivate()
            .addOnCompleteListener(this, new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    String playStoreAppVersionCodeStr = config.getString("android_latest_version_code");
                    int playStoreAppVersionCode = (playStoreAppVersionCodeStr == null || playStoreAppVersionCodeStr.isEmpty()) ? 0 : Integer.parseInt(playStoreAppVersionCodeStr);
                    callback.onResult(playStoreAppVersionCode);
                }
            });
}

interface FetchPlayStoreAppVersionCodeCallback {
    void onResult(int versionCode);
}

FirebaseRemoteConfig 개체 초기화 후 Firebase Remote Config에서 지정해두었던 필드의 값을 가져오면 됩니다.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!