Prechádzať zdrojové kódy

【Firebase】KMKdanRemoteConfig OC转Swift

lizhe 1 rok pred
rodič
commit
7e2df1498c

+ 40 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2352,6 +2352,18 @@
 		ADFCEB3F2B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
 		ADFCEB402B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
 		ADFCEB412B4FB8C90001EBAF /* FirebaseABTesting.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */; };
+		ADFCEB482B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB492B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB4A2B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */; };
+		ADFCEB4B2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB4C2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB4D2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */; };
+		ADFCEB512B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB522B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB532B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */; };
+		ADFCEB552B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
+		ADFCEB562B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
+		ADFCEB572B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */; };
 		BB00300F298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
 		BB003010298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
 		BB003011298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */; };
@@ -5497,6 +5509,10 @@
 		ADFCEB352B4F78220001EBAF /* KMFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFile.swift; sourceTree = "<group>"; };
 		ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseRemoteConfig.framework; sourceTree = "<group>"; };
 		ADFCEB3B2B4FB8C80001EBAF /* FirebaseABTesting.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseABTesting.framework; sourceTree = "<group>"; };
+		ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = RemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = ProRemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = DMGRemoteConfigDefaults.plist; sourceTree = "<group>"; };
+		ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFirebaseRemoteConfig.swift; sourceTree = "<group>"; };
 		BB00300E298CA383002DD1A0 /* KMPreferenceSegementControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPreferenceSegementControl.swift; sourceTree = "<group>"; };
 		BB003013298CA446002DD1A0 /* KMPreferenceGeneralController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPreferenceGeneralController.swift; sourceTree = "<group>"; };
 		BB003014298CA446002DD1A0 /* KMPreferenceGeneralController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPreferenceGeneralController.xib; sourceTree = "<group>"; };
@@ -6621,6 +6637,7 @@
 		89752DA22936ECD5003FF08E /* Third Pard Library */ = {
 			isa = PBXGroup;
 			children = (
+				ADFCEB422B4FBA430001EBAF /* RemoteConfig  */,
 				ADDDCE1A2B43A32A005B4AB5 /* AppSandboxFileAccess */,
 				9FC444F82AA5F7D600D7187C /* ZipArchive.framework */,
 				AD032CB62A4E6A7E00F1D745 /* Starscream.framework */,
@@ -9287,6 +9304,17 @@
 			path = FirebaseRemoteConfig;
 			sourceTree = "<group>";
 		};
+		ADFCEB422B4FBA430001EBAF /* RemoteConfig  */ = {
+			isa = PBXGroup;
+			children = (
+				ADFCEB542B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift */,
+				ADFCEB442B4FBA430001EBAF /* RemoteConfigDefaults.plist */,
+				ADFCEB452B4FBA430001EBAF /* ProRemoteConfigDefaults.plist */,
+				ADFCEB472B4FBA430001EBAF /* DMGRemoteConfigDefaults.plist */,
+			);
+			path = "RemoteConfig ";
+			sourceTree = "<group>";
+		};
 		BB00300D298CA367002DD1A0 /* View */ = {
 			isa = PBXGroup;
 			children = (
@@ -12141,6 +12169,7 @@
 				ADDF83742B391A5D00A81A4E /* CDSignatureDrawViewController.xib in Resources */,
 				AD3AAD792B0DCEB600DE5FE7 /* KMCompareSaveView.xib in Resources */,
 				ADBC2D15299CCD10006280C8 /* KMTextfieldButton.xib in Resources */,
+				ADFCEB4B2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				BBD1F77F296F9BE000343885 /* KMPageEditSettingBaseWindowController.xib in Resources */,
 				BBB3769E2B10A7FD009539CC /* a_4a.png in Resources */,
 				BB24D4AA2977BE6700041659 /* KMRedactConfirmWindowController.xib in Resources */,
@@ -12172,6 +12201,7 @@
 				ADE86AB12B03438400414DFA /* KMWatermarkWindowController.xib in Resources */,
 				ADEC7A84299397F8009A8256 /* SF-Pro-Text-Semibold.otf in Resources */,
 				ADDF83682B391A5C00A81A4E /* DSignatureSaveFolderViewController.xib in Resources */,
+				ADFCEB512B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				ADDF834A2B391A5C00A81A4E /* DSignatureDetailsViewController.xib in Resources */,
 				AD1CA4342A0640FC0070541F /* KMAnnotationScreenHeadView.xib in Resources */,
 				AD62606E2A9D968A006C6413 /* KMEditPDFAssets.xcassets in Resources */,
@@ -12409,6 +12439,7 @@
 				BB897231294B08DE0045787C /* KMWatermarkViewController.xib in Resources */,
 				9F56648A2988B16F00020985 /* KMTextfieldVC.xib in Resources */,
 				AD3AAD452B0B7B7B00DE5FE7 /* KMCompareThumbView.xib in Resources */,
+				ADFCEB482B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				9FDD0FA22952FF4D000C4DAD /* $themes.json in Resources */,
 				BB69C95C299116FD0001A9B1 /* five_line_score.pdf in Resources */,
 				BBFE6E702930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
@@ -12576,6 +12607,7 @@
 				9F0201762A1B488C00C9B673 /* KMAITranslationVC.xib in Resources */,
 				9F72D20C2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				9F512CCB2B4640AB00EC0BC3 /* KMPageDisplayCustomThemesCollectionViewItem.xib in Resources */,
+				ADFCEB492B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				BB03D6912B01C7AB008C9976 /* KMPDFEditInsertBlankPageWindow.xib in Resources */,
 				BBFE6E792930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
@@ -12705,6 +12737,7 @@
 				BBA9223C2B4E97540061057A /* KMPurchaseLimitWindowController.xib in Resources */,
 				ADE8BC3429F9261900570F89 /* KMSearchCellView.xib in Resources */,
 				8931684D296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
+				ADFCEB4C2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				AD58F4062B14954B00299EE0 /* KMCompareTextHeaderView.xib in Resources */,
 				9F8539DB294318D600DF644E /* TabsImage.xcassets in Resources */,
 				BB52372B29C313CA00663BD7 /* KMAnnotationPropertyBaseController.xib in Resources */,
@@ -12895,6 +12928,7 @@
 				BB5F8A1A29BB15AD00365ADB /* pic_mail.pdf in Resources */,
 				BBA922162B4E783F0061057A /* KMPurchaseCompareDMGWindowController.xib in Resources */,
 				ADE787A62AA5A833002EC85A /* KMAccountExceptionWindowController.xib in Resources */,
+				ADFCEB522B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				BB183DD22B4EAD5400F99C7E /* Ubuntu-Medium.ttf in Resources */,
 				9F8539CF29430BF300DF644E /* KMBrowserWindowController.xib in Resources */,
 				ADE86AA12B031FDB00414DFA /* KMCompareWindowController.xib in Resources */,
@@ -13048,6 +13082,7 @@
 				BBFE6E722930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				ADDF83762B391A5D00A81A4E /* CDSignatureDrawViewController.xib in Resources */,
 				BBF62C762B0347D1007B7E86 /* SplitWindowController.xib in Resources */,
+				ADFCEB4D2B4FBA440001EBAF /* ProRemoteConfigDefaults.plist in Resources */,
 				ADC63E4D2A49BEDD00854E02 /* KMSubscribeWaterMarkCollectionItem.xib in Resources */,
 				BB5DF1F62959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.xib in Resources */,
 				AD3AAD722B0DCC6800DE5FE7 /* KMCompareSaveWindow.xib in Resources */,
@@ -13079,6 +13114,7 @@
 				9FF94F1629A7476000B1EF69 /* KMDesignPropertySelector.xib in Resources */,
 				ADE8BC3529F9261900570F89 /* KMSearchCellView.xib in Resources */,
 				ADE787A72AA5A833002EC85A /* KMAccountExceptionWindowController.xib in Resources */,
+				ADFCEB532B4FBA440001EBAF /* DMGRemoteConfigDefaults.plist in Resources */,
 				ADDF836A2B391A5C00A81A4E /* DSignatureSaveFolderViewController.xib in Resources */,
 				ADDF834C2B391A5C00A81A4E /* DSignatureDetailsViewController.xib in Resources */,
 				BB3BA9082A13684A00623C08 /* Assets.xcassets in Resources */,
@@ -13316,6 +13352,7 @@
 				ADCFFC0829C04617007D3657 /* BOTA.xcassets in Resources */,
 				8931684E296E436B0073EA59 /* KMSignatureWindowController.xib in Resources */,
 				ADBC2D00299CA6C7006280C8 /* KMPrintDuplexPrintingSetView.xib in Resources */,
+				ADFCEB4A2B4FBA440001EBAF /* RemoteConfigDefaults.plist in Resources */,
 				BB51074429A61B4100978662 /* ProgressSheet.xib in Resources */,
 				89316857296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
 				9FBA0EEB28FFC2FE001117AF /* Image.xcassets in Resources */,
@@ -13869,6 +13906,7 @@
 				BB162E97295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				BB24FFDD2B28578C00A59054 /* KMTTSWindowController.swift in Sources */,
 				ADD1B6EC2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
+				ADFCEB552B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				ADBC2D11299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9FCFEC982AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,
 				ADAFDA302AE8E45000F084BC /* KMAdvertisementConfig.swift in Sources */,
@@ -14751,6 +14789,7 @@
 				BBF62C692B033B34007B7E86 /* KMPDFEditExtractWindow.swift in Sources */,
 				9FDD0F892952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				BBD1F78C296FACA300343885 /* KMPageEditExtractSettingView.swift in Sources */,
+				ADFCEB562B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				ADBC375129CAE27900D93208 /* KMComparativeOutlineRowView.swift in Sources */,
 				AD8DD2A42A9C35B2007CC9D0 /* KMThumbnailManager.swift in Sources */,
 				89D2D2E3294C452B00BFF5FE /* KMPDFThumbnailView.swift in Sources */,
@@ -16448,6 +16487,7 @@
 				ADA08A8C29F21A53009B2A7B /* KMPDFViewAnnotationOnceModeStore.swift in Sources */,
 				AD5999442AD8DC2000412F8B /* KMDynamicStampViewController.swift in Sources */,
 				BBC347FF295448DE008D2CD1 /* KMWatermarkTemplateModel.swift in Sources */,
+				ADFCEB572B4FBADB0001EBAF /* KMFirebaseRemoteConfig.swift in Sources */,
 				BBD7FE042A13218F00F96075 /* KMWatermarkAdjectivePropertyBaseController.swift in Sources */,
 				BBC28F482B0F352000D73206 /* KMImageToolTipContext.swift in Sources */,
 				ADDF83702B391A5C00A81A4E /* CDSignatureTextViewController.swift in Sources */,

+ 30 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /DMGRemoteConfigDefaults.plist

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl </key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_DMG_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_DMG_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+</dict>
+</plist>

+ 195 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /KMFirebaseRemoteConfig.swift

@@ -0,0 +1,195 @@
+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
+    }
+}

+ 34 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /ProRemoteConfigDefaults.plist

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+	<key>ShowAPP_AveragePrice</key>
+	<false/>
+	<key>SDKRecommendKey</key>
+	<false/>
+</dict>
+</plist>

+ 34 - 0
PDF Office/PDF Master/Third Pard Library/RemoteConfig /RemoteConfigDefaults.plist

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>appEvaluateAfterAdsCount</key>
+	<string>3</string>
+	<key>appEvaluateBeforeAdsCount</key>
+	<string>2</string>
+	<key>isDisplayAds</key>
+	<true/>
+	<key>isDisplayAdsEvaluateAfter</key>
+	<true/>
+	<key>displayAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_728x90_pro</string>
+	<key>displayHouseAdsUrl</key>
+	<string>https://www.pdfreaderpro.com/native?s=PDFReaderPro_Mac_Store_HouseAD_728x90</string>
+	<key>refreshAdsRate</key>
+	<string>1000000</string>
+	<key>refreshAdsRateEvaluateAfter</key>
+	<string>1000000</string>
+	<key>refreshAdsDate</key>
+	<string>180</string>
+	<key>refreshAdsDateEvaluateAfter</key>
+	<string>180</string>
+	<key>closeIntervalDate</key>
+	<string>600</string>
+	<key>closeIntervalDateEvaluateAfter</key>
+	<string>600</string>
+	<key>SDKRecommendKey</key>
+	<false/>
+	<key>ShowAPP_AveragePrice</key>
+	<false/>
+</dict>
+</plist>