Browse Source

【UI替换】主页 - 广告数据处理

lizhe 1 year ago
parent
commit
59ae472ee1

+ 1 - 1
PDF Office/PDF Master/AppDelegate.swift

@@ -45,7 +45,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
 
         //        MARK: 广告数据初始化
         KMAdvertisementManager.manager.initConfig(appName: .PDFReaderProMac,
-                                                  subscribeType: .unsubscribed,
+                                                  subscribeType: .unknow,
                                                   platform: .Mac)
         //        测试模式,默认false
         KMAdvertisementManager.manager.debug = true

+ 1 - 1
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.xib

@@ -258,8 +258,8 @@ Gw
                                             <constraint firstAttribute="trailing" secondItem="fnz-k9-XjO" secondAttribute="trailing" id="Ea6-4t-JOh"/>
                                             <constraint firstItem="SYM-SV-gBY" firstAttribute="leading" secondItem="eZs-02-dfp" secondAttribute="leading" id="I02-eo-zxb"/>
                                             <constraint firstItem="fnz-k9-XjO" firstAttribute="top" secondItem="eZs-02-dfp" secondAttribute="top" id="SNd-w5-4mI"/>
-                                            <constraint firstItem="SYM-SV-gBY" firstAttribute="top" secondItem="fnz-k9-XjO" secondAttribute="bottom" constant="16" id="k1P-NP-gcR"/>
                                             <constraint firstAttribute="trailing" secondItem="SYM-SV-gBY" secondAttribute="trailing" id="qLr-RD-68z"/>
+                                            <constraint firstAttribute="bottom" secondItem="SYM-SV-gBY" secondAttribute="bottom" constant="16" id="vXu-8W-zAc"/>
                                         </constraints>
                                     </customView>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="xMk-8H-B64" customClass="KMCreatPDFView" customModule="PDF_Master" customModuleProvider="target">

+ 12 - 12
PDF Office/PDF Master/Class/KMAdvertisement/Config/KMAdvertisementConfig.swift

@@ -76,12 +76,19 @@
     case iOS //
 }
 
-//订阅状态
+////订阅状态
+//@objc public enum KMAdvertisementSubscribeType: Int, Codable {
+//    case unknow = 0
+//    case unsubscribed = 1 //未订阅
+//    case subscribed = 2 //已订阅
+//    case all = 3 //无限制
+//}
+
 @objc public enum KMAdvertisementSubscribeType: Int, Codable {
     case unknow = 0
-    case unsubscribed = 1 //未订阅
-    case subscribed = 2 //已订阅
-    case all = 3 //无限制
+    case all //免费版跟付费版都需要显示
+    case pro //只有付费用户显示
+    case lite //只有免费用户显示
 }
 
 //点击视图后跳转选项
@@ -99,18 +106,11 @@
     case zhTW //
 }
 
-//显示样式
-@objc public enum KMRecommondShowType: Int, Codable {
-    case unknow = 0
-    case URL = 1 //链接
-    case comparative = 2 //比价表
-}
-
 @objcMembers open class KMAdvertisementConfig: NSObject {
     var isDebug: Bool = false
     var appName: KMAdvertisementAppNameType = .PDFReaderProMacPro
     var platform: KMAdvertisementPlatformType = .Mac
-    public var subscribeType: KMAdvertisementSubscribeType = .unsubscribed
+    public var subscribeType: KMAdvertisementSubscribeType = .unknow
     public var language: KMAdvertisementLanguageType = .unknow
     
     func activityBaseURL() -> String {

+ 95 - 30
PDF Office/PDF Master/Class/KMAdvertisement/Manager/KMAdvertisementManager.swift

@@ -114,7 +114,7 @@ extension KMAdvertisementManager {
      @param data 传入参数 NSDictionary
      @param isNeedLocalComparison 是否需要对比本地版本,如果不一样将会刷新
      @return KMAdvertisementModel
-      */
+     */
     public func parseData(data: [NSDictionary], isNeedLocalComparison: Bool ,completion:(_ result: [KMAdvertisementInfo]) -> Void) -> Void {
         //获取缓存数据
         var isNeedSave = false
@@ -128,19 +128,19 @@ extension KMAdvertisementManager {
                     let jsonData: Data = jsonString.data(using: .utf8)!
                     let dict = try?JSONSerialization.jsonObject(with: jsonData)
                     let decoder = JSONDecoder()
-    //                decoder.dataDecodingStrategy = .base64
-    //                decoder.keyDecodingStrategy = .convertFromSnakeCase //带下划线命名
-
+                    //                decoder.dataDecodingStrategy = .base64
+                    //                decoder.keyDecodingStrategy = .convertFromSnakeCase //带下划线命名
+                    
                     decoder.nonConformingFloatDecodingStrategy = .convertFromString(positiveInfinity: "+∞", negativeInfinity: "-∞", nan: "NaN")
-    #if DEBUG
+#if DEBUG
                     //MARK: 测试使用
                     var advertisementModel = try! decoder.decode(KMAdvertisementInfo.self, from: jsonData)
                     if (self.allowLoadContentData(data: advertisementModel)) {
                         resultArray.append(self.allowLoadItemData(advertisementModel))
                         isNeedSave = true
                     }
-    #else
-    //            MARK: 此处try 使用 ? ,如果数据出问题 advertisementModel将无参数, 测试时使用!
+#else
+                    //            MARK: 此处try 使用 ? ,如果数据出问题 advertisementModel将无参数, 测试时使用!
                     var advertisementModel = try? decoder.decode(KMAdvertisementInfo.self, from: jsonData)
                     if (advertisementModel != nil) {
                         if (self.allowLoadContentData(data: advertisementModel!)) {
@@ -148,7 +148,7 @@ extension KMAdvertisementManager {
                             isNeedSave = true
                         }
                     }
-    #endif
+#endif
                 }
             }
         }
@@ -182,34 +182,99 @@ extension KMAdvertisementManager {
         return result
     }
     
-//    func allowLoadContentData(data: KMAdvertisementModel) -> Bool {
-//        var result = false
-//        
-//        let time: NSInteger = NSInteger(KMAdvertisementTimeStampConversion.getCurrentTimeInterval())!
-//        let startTime: NSInteger = NSInteger(data.startTime!)!
-//        let endTime: NSInteger = NSInteger(data.endTime!)!
-//        let platform = configuration.platform
-//        let subscribeType = configuration.subscribeType
-//        let version = data.version ?? "1.0"
-//        let localVersion = self.getLocalVersion()
-//        let hidden = data.hidden ?? false
-//        
-//        if (time >= startTime &&
-//            time <= endTime &&
-//            platform == data.platform &&
-//            self.compareVersion(nowVersion:localVersion, newVersion: version) &&
-//            (subscribeType == data.subscribeType || data.subscribeType == .all) &&
-//            !hidden) {
-//            result = true
-//        }
-//        return result
-//    }
+    //    func allowLoadContentData(data: KMAdvertisementModel) -> Bool {
+    //        var result = false
+    //
+    //        let time: NSInteger = NSInteger(KMAdvertisementTimeStampConversion.getCurrentTimeInterval())!
+    //        let startTime: NSInteger = NSInteger(data.startTime!)!
+    //        let endTime: NSInteger = NSInteger(data.endTime!)!
+    //        let platform = configuration.platform
+    //        let subscribeType = configuration.subscribeType
+    //        let version = data.version ?? "1.0"
+    //        let localVersion = self.getLocalVersion()
+    //        let hidden = data.hidden ?? false
+    //
+    //        if (time >= startTime &&
+    //            time <= endTime &&
+    //            platform == data.platform &&
+    //            self.compareVersion(nowVersion:localVersion, newVersion: version) &&
+    //            (subscribeType == data.subscribeType || data.subscribeType == .all) &&
+    //            !hidden) {
+    //            result = true
+    //        }
+    //        return result
+    //    }
     
     //过滤item是否显示
     func allowLoadItemData(_ data: KMAdvertisementInfo) -> KMAdvertisementInfo {
+        let advertisement = data.advertisement
+        advertisement?.content = self.canShow(data: (advertisement?.content)!)
+        data.advertisement = advertisement
+        
+        let recommondContent = data.recommondContent
+        let recommondContentOther = recommondContent?.recommondContentOther
+        let recommondContentPDFPro = recommondContent?.recommondContentPDFPro
+        
+        recommondContentOther?.content = self.canShow(data: (recommondContentOther?.content)!)
+        recommondContentPDFPro?.content = self.canShow(data: (recommondContentPDFPro?.content)!)
+        
+        recommondContent?.recommondContentOther = recommondContentOther
+        recommondContent?.recommondContentPDFPro = recommondContentPDFPro
+        data.recommondContent = recommondContent
+        
         return data;
     }
     
+    func canShow(data: [KMAdvertisementItemInfo]) -> [KMAdvertisementItemInfo] {
+        var dataArray: [KMAdvertisementItemInfo] = []
+        for item in data {
+            let currentTime = Int(NSDate.init().timeIntervalSince1970 * 1000)
+            if item.show == "1" &&
+                currentTime > Int(item.startTime ?? "0") ?? currentTime &&
+                currentTime < Int(item.endTime ?? "0") ?? currentTime {
+                
+                var canAdd = true
+                if item.subscriptionType == "1" {
+                    if KMPurchaseManager.manager.state == .subscription {
+                        canAdd = false
+                    }
+                } else if item.subscriptionType == "2" {
+                    if KMPurchaseManager.manager.state != .subscription {
+                        canAdd = false
+                    }
+                }
+            
+                if canAdd {
+                    dataArray.append(item)
+                }
+            }
+        }
+        
+        return dataArray
+    }
+    
+//    + (BOOL)checkAdvertisementValid:(KMRecommondInfo *)info {
+//    #if DEBUG
+//        [[NSUserDefaults standardUserDefaults] removeObjectForKey:info.versionKey];
+//    #endif
+//        if ([[NSUserDefaults standardUserDefaults] objectForKey:info.versionKey]) {
+//            return NO;
+//        }
+//        if (!info.show) {
+//            return NO;
+//        }
+//        if (info.showType == KMRecommondShowType_Lite) {
+//            if ([[IAPProductsManager defaultManager] isAvailableAllFunction]) {
+//                return NO;
+//            }
+//        } else if (info.showType == KMRecommondShowType_Pro) {
+//            if (![[IAPProductsManager defaultManager] isAvailableAllFunction]) {
+//                return NO;
+//            }
+//        }
+//        return YES;
+//    }
+    
 //    func allowLoadItemData(_ data: KMAdvertisementModel) -> KMAdvertisementModel {
 //        //获取缓存数据
 //        if (UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") == nil) {

+ 9 - 3
PDF Office/PDF Master/Class/KMAdvertisement/Model/KMAdvertisementModel.swift

@@ -10,6 +10,7 @@
 @objcMembers public class KMAdvertisementInfo: NSObject, Codable {
     public var recommondContent: KMAdvertisementContent?
     public var advertisement: KMAdvertisementItem?
+    public var remoteControl: KMAdvertisementRemoteControl?
 }
 
 @objcMembers public class KMAdvertisementContent: NSObject, Codable {
@@ -23,12 +24,17 @@
     public var content: [KMAdvertisementItemInfo]?
 }
 
+@objcMembers public class KMAdvertisementRemoteControl: NSObject, Codable {
+    var showMenuHelpInfo: String?
+}
+
 @objcMembers public class KMAdvertisementItemInfo: NSObject, Codable {
     var index: Int?
     var show: String? //是否显示,内部有做了时间区间判断
-    var showType: KMRecommondShowType?
-    var startDate: String?
-    var endDate: String?
+    var subscriptionType: String? //类型
+    var showType: KMAdvertisementShowType?
+    var startTime: String?
+    var endTime: String?
     var versionKey: String? //版本号,唯一标识符
     var showCloseBtn: String? //是否显示关闭按钮,(左下角广告需要)
     var image: Image? //APP互推,常规状态下的图片