123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- import Foundation
- import FirebaseRemoteConfig
- enum KMRemoteConfigFetchStatus: Int {
- case success
- case failure
- }
- let KMFirebaseRemateConfigRequestIsSuccessful = "KMFirebaseRemateConfigRequestIsSuccessful"
- let KMFirebaseRemateConfigFinishNoti = "KMFirebaseRemateConfigFinishNoti"
- class KMKdanRemoteConfig: NSObject {
- typealias KMRemoteConfigFetchCompletion = (KMRemoteConfigFetchStatus, Error?) -> Void
- private let kIsDisplayAdsKey = "isDisplayAds"
- private let kIsDisplayAdsEvaluateAfterKey = "isDisplayAdsEvaluateAfter"
- private let kDisplayAdsUrlConfigKey = "displayAdsUrl"
- private let kDisplayHouseAdsUrlConfigKey = "displayHouseAdsUrl"
- private let kRefreshAdsRateDayKey = "refreshAdsRate"
- private let kRefreshAdsRateDayEvaluateAfterKey = "refreshAdsRateEvaluateAfter"
- private let kRefreshAdsDateDayKey = "refreshAdsDate"
- private let kRefreshAdsDateDayEvaluateAfterKey = "refreshAdsDateEvaluateAfter"
- private let kCloseIntervalDateDayKey = "closeIntervalDate"
- private let kCloseIntervalDateDayEvaluateAfterKey = "closeIntervalDateEvaluateAfter"
- private let kAppEvaluateBeforeAdsCountKey = "appEvaluateBeforeAdsCount"
- private let kAppEvaluateAfterAdsCountKey = "appEvaluateAfterAdsCount"
- private var remoteConfigDatas: [String: Any] = [:]
- private var userInfo: [String: Any] = [:]
- private lazy var firebaseConfig: RemoteConfig = {
- let config = RemoteConfig.remoteConfig()
- let settings = RemoteConfigSettings()
- settings.minimumFetchInterval = 0
- config.configSettings = settings
-
- #if VERSION_FREE
- config.setDefaults(fromPlist: "RemoteConfigDefaults")
- #else
- config.setDefaults(fromPlist: "ProRemoteConfigDefaults")
- #endif
-
- return config
- }()
- static func remoteConfig() -> KMKdanRemoteConfig {
- return KMKdanRemoteConfig()
- }
- override init() {
- super.init()
- let mainBundleString = Bundle.main.bundleIdentifier ?? ""
- var dataPath: String?
- #if VERSION_DMG
- dataPath = Bundle.main.path(forResource: "DMGRemoteConfigDefaults", ofType: "plist")
- #else
- #if VERSION_FREE
- dataPath = Bundle.main.path(forResource: "RemoteConfigDefaults", ofType: "plist")
- #else
- dataPath = Bundle.main.path(forResource: "ProRemoteConfigDefaults", ofType: "plist")
- #endif
- #endif
- if let path = dataPath, let dict = NSDictionary(contentsOfFile: path) as? [String: Any] {
- self.userInfo = dict
- }
- }
- func fetch(completionHandler: @escaping KMRemoteConfigFetchCompletion) {
- // Your implementation here
- }
- func fetchWithRemoteConfigCompletionHandler(completionHandler: @escaping RemoteConfigFetchCompletion) {
- // Your implementation here
- }
- func isDisplayAds() -> Bool {
- var isDisplayAds = userInfo[kIsDisplayAdsKey] as? Bool ?? true
- if let value = remoteConfigDatas[kIsDisplayAdsKey] as? Bool {
- isDisplayAds = value
- }
- return isDisplayAds
- }
- func isDisplayAdsEvaluateAfter() -> Bool {
- var isDisplayAds = userInfo[kIsDisplayAdsEvaluateAfterKey] as? Bool ?? true
- if let value = remoteConfigDatas[kIsDisplayAdsEvaluateAfterKey] as? Bool {
- isDisplayAds = value
- }
- return isDisplayAds
- }
- func displayHouseAdsUrl() -> String {
- var adsUrl = userInfo[kDisplayHouseAdsUrlConfigKey] as? String ?? ""
- if let value = remoteConfigDatas[kDisplayHouseAdsUrlConfigKey] as? String {
- adsUrl = value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
- }
- return adsUrl
- }
- func displayAdsUrl() -> String {
- var adsUrl = userInfo[kDisplayAdsUrlConfigKey] as? String ?? ""
- if let value = remoteConfigDatas[kDisplayAdsUrlConfigKey] as? String {
- adsUrl = value.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? ""
- }
- return adsUrl
- }
- func refreshAdsRate() -> Int {
- var adsRate = userInfo[kRefreshAdsRateDayKey] as? Int ?? 0
- if let value = remoteConfigDatas[kRefreshAdsRateDayKey] as? Int {
- adsRate = value
- }
- return adsRate
- }
- func refreshAdsRateEvaluateAfter() -> Int {
- var adsRate = userInfo[kRefreshAdsRateDayEvaluateAfterKey] as? Int ?? 0
- if let value = remoteConfigDatas[kRefreshAdsRateDayEvaluateAfterKey] as? Int {
- adsRate = value
- }
- return adsRate
- }
- func refreshAdsDate() -> Int {
- var adsDate = userInfo[kRefreshAdsDateDayKey] as? Int ?? 0
- if let value = remoteConfigDatas[kRefreshAdsDateDayKey] as? Int {
- adsDate = value
- }
- return adsDate
- }
- func refreshAdsDateEvaluateAfter() -> Int {
- var adsDate = userInfo[kRefreshAdsDateDayEvaluateAfterKey] as? Int ?? 0
- if let value = remoteConfigDatas[kRefreshAdsDateDayEvaluateAfterKey] as? Int {
- adsDate = value
- }
- return adsDate
- }
- func closeIntervalDate() -> Int {
- var intervalDate = userInfo[kCloseIntervalDateDayKey] as? Int ?? 0
- if let value = remoteConfigDatas[kCloseIntervalDateDayKey] as? Int {
- intervalDate = value
- }
- return intervalDate
- }
- func closeIntervalDateEvaluateAfter() -> Int {
- var intervalDate = userInfo[kCloseIntervalDateDayEvaluateAfterKey] as? Int ?? 0
- if let value = remoteConfigDatas[kCloseIntervalDateDayEvaluateAfterKey] as? Int {
- intervalDate = value
- }
- return intervalDate
- }
- func appEvaluateBeforeAdsCount() -> Int {
- var evaluateCount = userInfo[kAppEvaluateBeforeAdsCountKey] as? Int ?? 0
- if let value = remoteConfigDatas[kAppEvaluateBeforeAdsCountKey] as? Int {
- evaluateCount = value
- }
- return evaluateCount
- }
- func appEvaluateAfterAdsCount() -> Int {
- var evaluateCount = userInfo[kAppEvaluateAfterAdsCountKey] as? Int ?? 0
- if let value = remoteConfigDatas[kAppEvaluateAfterAdsCountKey] as? Int {
- evaluateCount = value
- }
- return evaluateCount
- }
- func showSDKRecommendInfo() -> Bool {
- guard firebaseConfig.lastFetchStatus == .success else {
- return false
- }
- return firebaseConfig["SDKRecommendKey"].boolValue
- }
- func showAPP_AveragePrice() -> Bool {
- guard firebaseConfig.lastFetchStatus == .success else {
- return false
- }
- return firebaseConfig["ShowAPP_AveragePrice"].boolValue
- }
- func showHelp_More_RecommendLink() -> Bool {
- guard firebaseConfig.lastFetchStatus == .success else {
- return false
- }
- return firebaseConfig["Help_More_Link_Recommend"].boolValue
- }
- }
|