[안드로이드] 인앱 업데이트_적용편

h_hi·2021년 1월 26일
0

android

목록 보기
1/6

인앱 업데이트는 앱의 버전 관리를 위해 앱 실행 시 자동 업데이트를 지원해주는 기능입니다.
인앱 업데이트는 Android 5.0(API 수준 21) 이상에서만 작동합니다.

library 설치

 implementation 'com.google.android.play:core:1.9.0'

업데이트 여부 확인

 private void checkAppUpdate() {
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();

        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    && appUpdateInfo.isUpdateTypeAllowed(AppUpdateType.IMMEDIATE)) { // 업데이트 있음
                requestUpdate(appUpdateInfo);
            } else {
                showSplash();
            }
        });
    }

appUpdateManager 를 초기화 해준 후, 현재 업데이트 할 필요가 있는지 확인합니다.

업데이트 하기

appUpdateManager.startUpdateFlowForResult(appUpdateInfo, AppUpdateType.IMMEDIATE, this, REQUEST_CODE);

appUpdateManager.startUpdateFlowForReuslt 를 통해 업데이트 요청합니다.
업데이트 타입에는 IMMEDIATE, FLEXIBLE 의 두 가지가 있습니다.
IMMEDIATE 는 강제성을 띄고, FLEXIBLE 는 새로운 기능 추천하는 경우와 같이 사용자가 업데이트를 선택하여 진행 할 수 있습니다.

업데이트 결과 callback

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if (requestCode == REQUEST_CODE) {
            if (resultCode != RESULT_OK) { // 업데이트 실패
                Log.e(TAG, "Update flow failed! Result code: " + resultCode);
                // 다시 업데이트
                checkAppUpdate();
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

onActivityResult 를 통해 업데이트 결과를 받아와 실패한 경우 다시 업데이트하도록 합니다.

업데이트가 중단된 경우

@Override
    protected void onResume() {
        super.onResume();

        appUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> { //업데이트 도중 앱을 stop 시켰다가 다시 실행 했을때 멈추진 않았는지 체크
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
                requestUpdate(appUpdateInfo);
            }
        });
    }

업데이트 도중 사용자가 앱을 종료하는 경우가 있을 수 있습니다.
앱이 다시 foreground 로 돌아왔을 때, 업데이트가 완료되었는지 확인합니다.

profile
안드로이드, flutter 개발자

0개의 댓글