Notice
Recent Posts
Recent Comments
Link
투케이2K
124. (TWOK/UTIL) [Android/Java] C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스 본문
투케이2K 유틸파일
124. (TWOK/UTIL) [Android/Java] C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스
투케이2K 2024. 3. 6. 20:23[설 명]
프로그램 : Android / Java
설 명 : C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스
[소스 코드]
package com.example.javaproject.C_Firebase;
import android.app.Activity;
import android.content.Context;
import com.example.javaproject.C_Util;
import com.example.javaproject.S_Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import java.util.HashMap;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
public class C_FirebaseRemoteConfig {
/**
* // --------------------------------------------------------------------------------------
* TODO [클래스 설명]
* // --------------------------------------------------------------------------------------
* 1. 파이어베이스 리모트 컨피트 관리 클래스
* // --------------------------------------------------------------------------------------
* 2. 참고 : 실제 운영 환경에서 파이어베이스 리모트 컨피그는 1시간에 4회 이상 호출 하면 에러가 발생 (즉, 20 분 마다 시간 측정 후 1번 씩 호출)
* // --------------------------------------------------------------------------------------
* */
/**
* // --------------------------------------------------------------------------------------
* TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // --------------------------------------------------------------------------------------
* // [SEARCH FAST] : [Observable] : [Get Key] : 특정 키 값 호출
* // --------------------------------------------------------------------------------------
*
* // --------------------------------------------------------------------------------------
*
* // --------------------------------------------------------------------------------------
*
* // --------------------------------------------------------------------------------------
*
* // --------------------------------------------------------------------------------------
*/
// -----------------------------------------------------------------------------------------
// TODO [전역 변수 선언]
// -----------------------------------------------------------------------------------------
private static final String ACTIVITY_NAME = "C_FirebaseRemoteConfig";
// -----------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [Observable] : [Get Key] : 특정 키 값 호출
// -----------------------------------------------------------------------------------------
// TODO [호출 방법 소스 코드]
// -----------------------------------------------------------------------------------------
/*
try {
// [팝업창 활성 수행]
C_FirebaseRemoteConfig.observableRemoteConfigGetKey(A_Intro.this, "test_key")
.subscribeOn(AndroidSchedulers.mainThread()) // [Observable (생성자) 로직을 IO 스레드에서 실행 : 백그라운드]
.observeOn(Schedulers.io()) // [Observer (관찰자) 로직을 메인 스레드에서 실행]
.subscribe(new Observer<String>() { // [Observable.create 타입 지정]
@Override
public void onSubscribe(@NonNull Disposable d) {
}
@Override
public void onNext(@NonNull String value) {
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
}
catch (Exception e){
e.printStackTrace();
}
*/
// -----------------------------------------------------------------------------------------
public static Observable<String> observableRemoteConfigGetKey(Context mContext, String key){
// [로직 처리 실시]
return Observable.create(subscriber -> {
try {
S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] 원격 알림 내용 확인 수행", new String[]{ "KEY :: " + String.valueOf(key) });
// TODO [방어 로직] : 널 체크
if (C_Util.stringNotNull(key) == true){
// [파이어베이스 리모트 객체 생성 실시]
FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings
.Builder()
.setMinimumFetchIntervalInSeconds(0) // TODO [Fetch 읽기 딜레이 시간]
.build();
// [해당 키값이 없을 경우 디폴트 값 삽입]
HashMap defaultMap = new HashMap <String, String>();
//defaultMap.put("app_version_aos", "0.0.0");
defaultMap.put(key, "");
config.setDefaultsAsync(defaultMap);
config.setConfigSettingsAsync(configSettings);
// [이벤트 리스너 수행 실시]
config.fetchAndActivate()
.addOnCompleteListener(
(Activity) mContext, // [액티비티]
new OnCompleteListener<Boolean>() { // [이벤트 리스너]
@Override
public void onComplete(@NonNull Task<Boolean> task) {
if (task.isSuccessful()) { // [해당 키값 확인 성공]
S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] [Success] - Remote Config Connection : onComplete", new String[]{ "KEY :: " + String.valueOf(key), "VALUE :: " + String.valueOf(config.getString(key)) });
try {
subscriber.onNext(String.valueOf(config.getString(key)));
subscriber.onComplete();
}
catch (Exception e){}
}
else { // [해당 키값 확인 실패]
S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] [Error] - Remote Config Connection : unSuccess", new String[]{ "KEY :: " + String.valueOf(key) });
try {
subscriber.onNext("");
subscriber.onComplete();
}
catch (Exception e){}
}
}
})
.addOnFailureListener(error -> {
S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] [Fail] - Remote Config Connection", new String[]{ "ERROR :: " + String.valueOf(error.getMessage()) });
try {
subscriber.onNext("");
subscriber.onComplete();
}
catch (Exception e){}
});
}
else {
S_Log._F_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] [Error] - Remote Config Connection", new String[]{ "ERROR :: Input Data Is Null" });
try {
subscriber.onNext("");
subscriber.onComplete();
}
catch (Exception ex){
ex.printStackTrace();
}
}
} catch (final Exception e){
S_Log._printStackTrace_(mContext, ACTIVITY_NAME + " : [Firebase] [Remote Config] [Exception]", null, e);
// ------------------------------------------------------
// TODO [리턴 데이터 반환]
// ------------------------------------------------------
try {
subscriber.onNext("");
subscriber.onComplete();
}
catch (Exception ex){
ex.printStackTrace();
}
}
});
}
} // TODO [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments