투케이2K

229. (AndroidStudio/android/java) 안드로이드 파이어베이스 리모트 서비스 (firebase remote config) 사용해 앱 최신 버전 관리 실시 본문

Android

229. (AndroidStudio/android/java) 안드로이드 파이어베이스 리모트 서비스 (firebase remote config) 사용해 앱 최신 버전 관리 실시

투케이2K 2021. 12. 7. 15:06

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스 코드]

    // TODO [파이어베이스 리모트 앱 최신 버전 체크]
    public void checkUpdateMobileVersion() {
        Log.i("---","---");
        Log.d("//===========//","================================================");
        Log.i("","\n"+"[A_Intro >> checkUpdateMobileVersion() :: 파이어베이스 리모트 앱 최신 버전 체크 수행]");
        Log.d("//===========//","================================================");
        Log.i("---","---");

        /**
         * [사전 필요 사항]
         * 1. 파이어베이스 안드로이드 프로젝트 생성
         * 2. 파이어베이스 콘솔 사이트 Remote Config 메뉴에서 >> app_version_aos [key] 생성 필요
         * 3. build.gradle (의존성) :
         *    - implementation 'com.google.firebase:firebase-config:19.1.4'
         *    - implementation 'com.google.firebase:firebase-analytics:17.4.3'
         * 4. 파이어베이스 참고 사이트 :
         *    - https://firebase.google.com/docs/remote-config/get-started?platform=android&hl=ko
         * */

        try {
            // [파이어베이스에 등록된 key 정의]
            String key = "app_version_aos";
            String value = "0.0.0";


            // [파이어베이스 리모트 객체 생성 실시]
            FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
            FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings
                    .Builder()
                    .setMinimumFetchIntervalInSeconds(0)
                    .build();


            // [해당 키값이 없을 경우 디폴트 값 삽입]
            HashMap defaultMap = new HashMap <String, String>();
            //defaultMap.put("app_version_aos", "0.0.0");
            defaultMap.put(key, value);
            config.setDefaultsAsync(defaultMap);
            config.setConfigSettingsAsync(configSettings);


            // [최신 앱 버전 확인 이벤트 리스너 수행 실시]
            config.fetchAndActivate().addOnCompleteListener(
                    A_Intro.this, // [액티비티]
                    new OnCompleteListener<Boolean>() { // [이벤트 리스너]
                        @Override
                        public void onComplete(@NonNull Task<Boolean> task) {
                            if (task.isSuccessful()) { // [해당 키값 확인 성공]
                                Log.i("---","---");
                                Log.w("//===========//","================================================");
                                Log.i("","\n"+"[A_Intro >> checkUpdateMobileVersion() :: 파이어베이스 리모트 앱 최신 버전 체크 성공]");
                                Log.i("","\n"+"[version :: "+String.valueOf(config.getString("app_version_aos"))+"]");
                                Log.w("//===========//","================================================");
                                Log.i("---","---");
                            }
                            else { // [해당 키값 확인 실패]
                                Log.i("---","---");
                                Log.e("//===========//","================================================");
                                Log.i("","\n"+"[A_Intro >> checkUpdateMobileVersion() :: 파이어베이스 리모트 앱 최신 버전 체크 실패]");
                                Log.i("","\n"+"[default :: "+String.valueOf(defaultMap.toString())+"]");
                                Log.e("//===========//","================================================");
                                Log.i("---","---");
                            }
                        }
                    });
        }
        catch (Exception e){
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[A_Intro >> checkUpdateMobileVersion() :: 파이어베이스 리모트 앱 최신 버전 체크 에러]");
            Log.i("","\n"+"[catch :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
        }
    }
 

[결과 출력]

 
 

 

반응형
Comments