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 페이지에 들어가셔서 Remote Config에서 매개변수 추가 후 변경사항 게시를 해주시면 됩니다.
저는 android_latest_version_code라고 앱 변수이름을 짓고 app version code값을 입력해 주었습니다.
코드
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에서 지정해두었던 필드의 값을 가져오면 됩니다.