Notice
Recent Posts
Recent Comments
Link
투케이2K
123. (TWOK/UTIL) [Ios/Swift] C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스 본문
투케이2K 유틸파일
123. (TWOK/UTIL) [Ios/Swift] C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스
투케이2K 2024. 3. 6. 20:19[설 명]
프로그램 : Ios / Swift
설 명 : C_FirebaseRemoteConfig - 파이어베이스 리모트 컨피그 원격 공지 확인 클래스
[소스 코드]
import Foundation
import UIKit
// ----------------------------------
// MARK: - [파이어베이스 라이브러리]
// ----------------------------------
import Firebase
// ----------------------------------
class C_FirebaseRemoteConfig {
/**
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 1. 파이어베이스 리모트 컨피트 관리 클래스
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 2. 참고 : 실제 운영 환경에서 파이어베이스 리모트 컨피그는 1시간에 4회 이상 호출 하면 에러가 발생 (즉, 20 분 마다 시간 측정 후 1번 씩 호출)
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* 3. 참고 : AppDelegate 파일에서 사전 FirebaseApp.configure 정의 필요
*
* let fireBaseConfigFile = Bundle.main.path(forResource: "GoogleService-Info", ofType: "plist")!
* let firOptions = FirebaseOptions(contentsOfFile: fireBaseConfigFile)!
* FirebaseApp.configure(options: firOptions)
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
/**
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* // [SEARCH FAST] : [Observable] : [Get Key] : 특정 키 값 호출
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
*
* // -----------------------------------------------------------------------------------------------------------------------------------------------------------------
* */
// -----------------------------------------------------------------------------------------
// MARK: - [전역 변수 선언]
// -----------------------------------------------------------------------------------------
private static let ACTIVITY_NAME = "C_FirebaseRemoteConfig"
// -----------------------------------------------------------------------------------------
// MARK: - [SEARCH FAST] : [Observable] : [Get Key] : 특정 키 값 호출
// -----------------------------------------------------------------------------------------
func observableRemoteConfigGetKey(key:String, completion: @escaping (String)->()) {
/*
// -----------------------------------------
[observableRemoteConfigGetKey 메소드 설명]
// -----------------------------------------
1. 파이어베이스 리모트 컨피그 특정 key 값 확인
// -----------------------------------------
2. 호출 방법 :
C_FirebaseRemoteConfig().observableRemoteConfigGetKey(key: "test_key"){(result) in
S_Log._F_(description: "파이어베이스 리모트 컨피그 콜백 결과 확인", data: ["\(result)"])
}
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
S_Log._F_(description: C_FirebaseRemoteConfig.ACTIVITY_NAME + " : [Firebase] [Remote Config] 원격 알림 내용 확인 수행", data: [
"KEY :: \(key)"
])
// [key 널 체크]
if C_Util().stringNotNull(str: key) == true {
// [파이어베이스 리모트 객체 생성 실시]
var remoteConfig = RemoteConfig.remoteConfig()
var settings = RemoteConfigSettings()
settings.minimumFetchInterval = 0 // MARK: [Fetch 파이어베이스 리모트 컨피그 읽기 딜레이 시간]
remoteConfig.configSettings = settings
// [해당 키값이 없을 경우 디폴트 값 삽입]
let defaultDic: NSDictionary = ["\(key)":""]
remoteConfig.setDefaults(defaultDic as? [String : NSObject])
// [리모트 컨피그 값 확인]
remoteConfig.fetch { (status, error) -> Void in
if status == .success {
remoteConfig.activate { changed, error in
if error != nil {
S_Log._F_(description: C_FirebaseRemoteConfig.ACTIVITY_NAME + " : [Firebase] [Remote Config] [Error] - Remote Config Connection : Not Success", data: [
"KEY :: \(key)",
"ERROR :: \(String(describing: error?.localizedDescription))"
])
// [콜백 반환]
completion("\(remoteConfig.configValue(forKey: "\(key)").stringValue ?? "")")
}
else {
S_Log._F_(description: C_FirebaseRemoteConfig.ACTIVITY_NAME + " : [Firebase] [Remote Config] [Success] - Remote Config Connection : onComplete", data: [
"KEY :: \(key)",
"VALUE :: \(remoteConfig.configValue(forKey: "\(key)").stringValue ?? "")"
])
// [콜백 반환]
completion("\(remoteConfig.configValue(forKey: "\(key)").stringValue ?? "")")
}
}
}
else {
S_Log._F_(description: C_FirebaseRemoteConfig.ACTIVITY_NAME + " : [Firebase] [Remote Config] [Error] - Remote Config Connection : unSuccess", data: [
"KEY :: \(key)",
"ERROR :: \(String(describing: error?.localizedDescription))"
])
// [콜백 반환]
completion("")
}
}
}
else {
S_Log._F_(description: C_FirebaseRemoteConfig.ACTIVITY_NAME + " : [Firebase] [Remote Config] [Error] - Remote Config Connection", data: [
"ERROR :: Input Data Is Null"
])
// [콜백 반환]
completion("")
}
}
}
} // [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments