lizhe пре 2 година
родитељ
комит
d02ac32fce

+ 20 - 4
KMAdvertisement.xcodeproj/project.pbxproj

@@ -560,10 +560,8 @@
 		ADB09A1C293460B900A2C756 /* List */ = {
 			isa = PBXGroup;
 			children = (
-				AD9CAA5F2938B0BF000216EA /* Presenter */,
-				ADB09A4A29347D7F00A2C756 /* Cell */,
-				ADB09A4129347C2E00A2C756 /* KMAdvertisementTableView.swift */,
-				ADB09A532934916F00A2C756 /* KMAdvertisementTableView.xib */,
+				ADB1F8EB296FA4D400ED072D /* iOS */,
+				ADB1F8EA296FA4CA00ED072D /* Mac */,
 			);
 			path = List;
 			sourceTree = "<group>";
@@ -659,6 +657,24 @@
 			path = Mac;
 			sourceTree = "<group>";
 		};
+		ADB1F8EA296FA4CA00ED072D /* Mac */ = {
+			isa = PBXGroup;
+			children = (
+				AD9CAA5F2938B0BF000216EA /* Presenter */,
+				ADB09A4A29347D7F00A2C756 /* Cell */,
+				ADB09A4129347C2E00A2C756 /* KMAdvertisementTableView.swift */,
+				ADB09A532934916F00A2C756 /* KMAdvertisementTableView.xib */,
+			);
+			path = Mac;
+			sourceTree = "<group>";
+		};
+		ADB1F8EB296FA4D400ED072D /* iOS */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = iOS;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */

Разлика између датотеке није приказан због своје велике величине
+ 156 - 0
KMAdvertisement.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist


+ 4 - 4
KMAdvertisement/KMAdvertisement.docc/接入文档.md

@@ -1266,7 +1266,7 @@ KMAdvertisementManager.manager.fetchData { data, error in
             "content":[
                 {
                     "actionType":1,
-                    "productID":"2022010501",
+                    "productID":"2022010601",
                     "title":{
                         "font":{
                             "name":"Helvetica-Bold",
@@ -1379,7 +1379,7 @@ KMAdvertisementManager.manager.fetchData { data, error in
                 },
                 {
                     "actionType":2,
-                    "productID":"2022010502",
+                    "productID":"2022010602",
                     "title":{
                         "font":{
                             "name":"Helvetica-Bold",
@@ -1491,7 +1491,7 @@ KMAdvertisementManager.manager.fetchData { data, error in
                     }
                 },
                 {
-                    "actionType":2,
+                    "actionType":1,
                     "productID":"2022010503",
                     "title":{
                         "font":{
@@ -1605,7 +1605,7 @@ KMAdvertisementManager.manager.fetchData { data, error in
                 },
                 {
                     "actionType":1,
-                    "productID":"2022010504",
+                    "productID":"2022010604",
                     "title":{
                         "font":{
                             "name":"Helvetica-Bold",

+ 5 - 4
KMAdvertisement/KMAdvertisementConfig.swift

@@ -102,8 +102,8 @@
 @objcMembers open class KMAdvertisementConfig: NSObject {
     var appName: KMAdvertisementAppNameType = .FilmageEditorMac
     var platform: KMAdvertisementPlatformType = .Mac
-    var subscribeType: KMAdvertisementSubscribeType = .unsubscribed
-    var language: KMAdvertisementLanguageType = .unknow
+    public var subscribeType: KMAdvertisementSubscribeType = .unsubscribed
+    public var language: KMAdvertisementLanguageType = .unknow
     
     func activityBaseURL() -> String {
         if (KMAdvertisementManager.manager.debug) {
@@ -120,7 +120,9 @@
         self.subscribeType = subscribeType
         self.platform = platform
     }
-    
+}
+
+extension KMAdvertisementConfig {
     static func adapterDark(light: AnyObject, dark: AnyObject) -> AnyObject {
         if self.isDarkModel() {
             return dark
@@ -163,5 +165,4 @@
         }
 #endif
     }
-    
 }

+ 16 - 5
KMAdvertisement/KMAdvertisementManager.swift

@@ -111,6 +111,10 @@ extension KMAdvertisementManager {
      @param superView 父视图 <NSView>
      @return KMAdvertisementModel
       */
+    @objc public func show(type: KMAdvertisementShowType, data: KMAdvertisementModel?, superView: NSView?, _ action: KMAdvertisementActionCompletion?) -> NSView  {
+        return self.show(type: type, data: data, superView: superView, action, nil)
+    }
+    
     @objc public func show(type: KMAdvertisementShowType, data: KMAdvertisementModel?, superView: NSView?, _ action: KMAdvertisementActionCompletion?, _ loadCompletion: KMAdvertisementLoadCompletion?) -> NSView {
         var view = KMAdvertisementBaseView()
 #if os(OSX)
@@ -243,7 +247,7 @@ extension KMAdvertisementManager {
             time <= endTime &&
             platform == data.platform &&
             self.compareVersion(nowVersion:localVersion, newVersion: version) &&
-            subscribeType == data.subscribeType &&
+            (subscribeType == data.subscribeType || data.subscribeType == .all) &&
             !hidden) {
             result = true
         }
@@ -252,9 +256,15 @@ extension KMAdvertisementManager {
     
     //过滤item是否显示
     func allowLoadItemData(_ data: KMAdvertisementModel) -> KMAdvertisementModel {
-        var model = data
-        var sections: [KMAdvertisementModel.Section] = []
-        for var section in data.content! {
+        //获取缓存数据
+        if (UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") == nil) {
+            UserDefaults.standard.set([], forKey: "KMAdvertisementShowScroll_iOS")
+        }
+        let cacheArray: [String] = UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") as! [String]
+        
+        let model = data
+        var sections: [KMAdvertisementModelSection] = []
+        for section in data.content! {
             var items: [KMAdvertisementModelItem] = []
             for item in section.content! {
                 let timeString = KMAdvertisementTimeStampConversion.getCurrentTimeInterval()
@@ -266,7 +276,8 @@ extension KMAdvertisementManager {
                 print(hidden ? "隐藏" : "显示")
                 if (!hidden &&
                     time >= startTime &&
-                    time <= endTime) {
+                    time <= endTime &&
+                    !cacheArray.contains(item.productID ?? "")) {
                     items.append(item)
                 }
             }

+ 6 - 6
KMAdvertisement/Model/KMAdvertisementModel.swift

@@ -31,12 +31,12 @@
     public let version: String? //小于等于此版本生效
     public let hidden: Bool? //是否显示
     let subscribeType: KMAdvertisementSubscribeType? //是否订阅
-    var content: [Section]?
-    
-    @objc public class Section: NSObject, Codable {
-        let sectionTitle: KMAdvertisementModelItem.Text?
-        var content: [KMAdvertisementModelItem]?
-    }
+    public var content: [KMAdvertisementModelSection]?
+}
+
+@objcMembers public class KMAdvertisementModelSection: NSObject, Codable {
+    let sectionTitle: KMAdvertisementModelItem.Text?
+    public var content: [KMAdvertisementModelItem]?
 }
 
 @objcMembers public class KMAdvertisementModelItem: NSObject, Codable {

+ 1 - 1
KMAdvertisement/UI/Base/KMAdvertisementBaseView.swift

@@ -18,7 +18,7 @@
 }
 
 public typealias KMAdvertisementActionCompletion = (_ actionType: KMAdvertisementBaseViewActionType, _ actionItem: KMAdvertisementModelItem) -> Void
-public typealias KMAdvertisementLoadCompletion = (_ data: [KMAdvertisementModel.Section]) -> Void
+public typealias KMAdvertisementLoadCompletion = (_ data: [KMAdvertisementModelSection]) -> Void
 
 @objc open class KMAdvertisementBaseView: NSView {
     public var actionCompletion: KMAdvertisementActionCompletion?

+ 1 - 1
KMAdvertisement/UI/List/Cell/KMAdvertisementCollectionHeadView.swift

@@ -21,7 +21,7 @@ class KMAdvertisementCollectionHeadView: NSView {
         return nil
     }()
     
-    var model: KMAdvertisementModel.Section! {
+    var model: KMAdvertisementModelSection! {
         didSet {
             self.reloadData()
         }

KMAdvertisement/UI/List/Cell/KMAdvertisementCollectionHeadView.xib → KMAdvertisement/UI/List/Mac/Cell/KMAdvertisementCollectionHeadView.xib


KMAdvertisement/UI/List/Cell/KMAdvertisementCollectionViewItem.swift → KMAdvertisement/UI/List/Mac/Cell/KMAdvertisementCollectionViewItem.swift


KMAdvertisement/UI/List/Cell/KMAdvertisementCollectionViewItem.xib → KMAdvertisement/UI/List/Mac/Cell/KMAdvertisementCollectionViewItem.xib


+ 3 - 3
KMAdvertisement/UI/List/KMAdvertisementTableView.swift

@@ -28,7 +28,7 @@
     }
 
     //内部使用数据
-    fileprivate var data: [KMAdvertisementModel.Section]?
+    fileprivate var data: [KMAdvertisementModelSection]?
 
     open override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -90,7 +90,7 @@
 }
 
 extension KMAdvertisementTableView: KMAdvertisementTableViewPresenterDelegate {
-    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModel.Section>) {
+    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModelSection>) {
         self.data = data
         self.collectionView.reloadData()
     }
@@ -121,7 +121,7 @@ extension KMAdvertisementTableView: NSCollectionViewDataSource {
     }
     
     public func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
-        let model: KMAdvertisementModel.Section = (self.data?[section])!
+        let model: KMAdvertisementModelSection = (self.data?[section])!
         return model.content!.count
     }
     

KMAdvertisement/UI/List/KMAdvertisementTableView.xib → KMAdvertisement/UI/List/Mac/KMAdvertisementTableView.xib


+ 6 - 6
KMAdvertisement/UI/List/Presenter/KMAdvertisementTableViewPresenter.swift

@@ -6,7 +6,7 @@
 //
 
 class KMAdvertisementTableViewPresenter: NSObject {
-    lazy var modelData: [KMAdvertisementModel.Section] = []
+    lazy var modelData: [KMAdvertisementModelSection] = []
     var view: AnyObject?
     fileprivate weak var delegate: KMAdvertisementTableViewPresenterDelegate?
 }
@@ -23,7 +23,7 @@ extension KMAdvertisementTableViewPresenter: KMAdvertisementTableViewPresenterPr
         self.delegate?.showData(presenter: self, data: self.modelData)
     }
     
-    func fetchData(data: [KMAdvertisementModel.Section]) -> [KMAdvertisementModel.Section] {
+    func fetchData(data: [KMAdvertisementModelSection]) -> [KMAdvertisementModelSection] {
         if data.count != 0 {
             //获取缓存数据
             if (UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") == nil) {
@@ -31,11 +31,11 @@ extension KMAdvertisementTableViewPresenter: KMAdvertisementTableViewPresenterPr
             }
             let cacheArray: [String] = UserDefaults.standard.object(forKey: "KMAdvertisementShowScroll_iOS") as! [String]
             
-            var sectionArray: [KMAdvertisementModel.Section] = []
-            var itemArray: [KMAdvertisementModelItem] = []
+            var sectionArray: [KMAdvertisementModelSection] = []
             for section in data {
+                var itemArray: [KMAdvertisementModelItem] = []
                 for item in section.content! {
-                    if !cacheArray.contains(item.productID!) {
+                    if !cacheArray.contains(item.productID ?? "") {
                         itemArray.append(item)
                     }
                 }
@@ -83,7 +83,7 @@ protocol KMAdvertisementTableViewPresenterDelegate: AnyObject {
      @param presenter
      @param data 返回数据
      */
-    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModel.Section>)
+    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModelSection>)
 }
 
 protocol KMAdvertisementTableViewPresenterProtocol {

+ 3 - 3
KMAdvertisement/UI/Scroll/iOS/KMAdvertisementShowScroll_iOS.swift

@@ -17,7 +17,7 @@ open class KMAdvertisementShowScroll_iOS: KMAdvertisementBaseView {
     lazy var presenter: KMAdvertisementTableViewPresenter! = KMAdvertisementTableViewPresenter()
     
     //内部使用数据
-    fileprivate var data: [KMAdvertisementModel.Section]?
+    fileprivate var data: [KMAdvertisementModelSection]?
     /**
       @abstract 外部传入数据
       @param inputData 文件路劲
@@ -95,7 +95,7 @@ open class KMAdvertisementShowScroll_iOS: KMAdvertisementBaseView {
 }
 
 extension KMAdvertisementShowScroll_iOS: KMAdvertisementTableViewPresenterDelegate {
-    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModel.Section>) {
+    func showData(presenter: KMAdvertisementTableViewPresenter, data: Array<KMAdvertisementModelSection>) {
         self.data = data
         self.collectionView.reloadData()
         if self.loadCompletion != nil {
@@ -124,7 +124,7 @@ extension KMAdvertisementShowScroll_iOS: UICollectionViewDelegate {
 extension KMAdvertisementShowScroll_iOS: UICollectionViewDataSource {
     public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
         if self.data != nil {
-            let model: KMAdvertisementModel.Section = (self.data?[section])!
+            let model: KMAdvertisementModelSection = (self.data?[section])!
             return model.content!.count
         } else {
             return 0

+ 5 - 1
KMAdvertisementDemo_Mac/ViewController.swift

@@ -25,7 +25,7 @@ class ViewController: NSViewController {
 
         // Do any additional setup after loading the view.
         //设置基础参数
-        KMAdvertisementManager.manager.initConfig(appName: .FilmageEditorMac,
+        KMAdvertisementManager.manager.initConfig(appName: .PDFReaderProMacDMG,
                                                   subscribeType: .unsubscribed,
                                                   platform: .Mac)
         //测试模式,默认false
@@ -51,6 +51,8 @@ class ViewController: NSViewController {
                                     NSWorkspace.shared.open(URL.init(string: string)!)
                                 }
                             }
+                        } _: { data in
+                            print("数据刷新了")
                         }
                         
                         //视图加载方法二
@@ -64,6 +66,8 @@ class ViewController: NSViewController {
                         //视图加载方法一
                         let view =  KMAdvertisementManager.manager.show(type: KMAdvertisementShowType.view, data: model, superView: weakSelf.showView) { actionType, actionItem in
                             print("view 1")
+                        } _: { data in
+                            print("数据刷新了")
                         }
                         
                         //视图加载方法二