瀏覽代碼

接入BFAnalyzeKit

wenweiwei 3 年之前
父節點
當前提交
51cd579a20
共有 31 個文件被更改,包括 159 次插入1381 次删除
  1. 1 3
      BFStuckPointKit.podspec
  2. 20 7
      BFStuckPointKit/Classes/BFUtils/PQAliOssUtil.swift
  3. 1 0
      BFStuckPointKit/Classes/BFUtils/PQSingletoRealmUtil.swift
  4. 7 5
      BFStuckPointKit/Classes/BFUtils/PQSingletoVideoPlayer.swift
  5. 0 129
      BFStuckPointKit/Classes/BFUtils/PQSingletonEnvUtil.swift
  6. 5 18
      BFStuckPointKit/Classes/Controller/PQEditMusicSearchController.swift
  7. 31 32
      BFStuckPointKit/Classes/Controller/PQStuckPointEditerController.swift
  8. 5 5
      BFStuckPointKit/Classes/Controller/PQStuckPointMaterialController.swift
  9. 9 8
      BFStuckPointKit/Classes/Controller/PQStuckPointMusicContentController.swift
  10. 5 4
      BFStuckPointKit/Classes/Controller/PQStuckPointMusicController.swift
  11. 2 1
      BFStuckPointKit/Classes/Controller/PQStuckPointMusicSearchController.swift
  12. 15 12
      BFStuckPointKit/Classes/Controller/PQStuckPointPublicController.swift
  13. 0 341
      BFStuckPointKit/Classes/EventTrack/Model/PQVideoMakeEventTrackModel.swift
  14. 0 551
      BFStuckPointKit/Classes/EventTrack/ViewModel/PQEventTrackViewModel.swift
  15. 0 82
      BFStuckPointKit/Classes/Model/PQReCreateModel.swift
  16. 0 33
      BFStuckPointKit/Classes/Model/PQUploadModel.swift
  17. 2 114
      BFStuckPointKit/Classes/Model/PQVideoListModel.swift
  18. 5 4
      BFStuckPointKit/Classes/SelectImage/PQUploadController.swift
  19. 1 0
      BFStuckPointKit/Classes/View/PQCustomSpeedSettingView.swift
  20. 1 0
      BFStuckPointKit/Classes/View/PQEditPublicCoverImageView.swift
  21. 4 15
      BFStuckPointKit/Classes/View/PQSelecteMusicView.swift
  22. 1 0
      BFStuckPointKit/Classes/View/PQSelectedMaterialListView.swift
  23. 7 6
      BFStuckPointKit/Classes/View/PQSpeedSettingView.swift
  24. 3 4
      BFStuckPointKit/Classes/View/PQStuckPointCuttingView.swift
  25. 1 0
      BFStuckPointKit/Classes/View/PQStuckPointMaterialHeadView.swift
  26. 1 0
      BFStuckPointKit/Classes/View/PQStuckPointMusicContentCell.swift
  27. 2 0
      BFStuckPointKit/Classes/ViewModel/PQStuckPointViewModel.swift
  28. 3 2
      BFStuckPointKit/Classes/ViewModel/PQUploadViewModel.swift
  29. 2 0
      Example/BFStuckPointKit.xcodeproj/project.pbxproj
  30. 2 1
      Example/Podfile
  31. 23 4
      Example/Podfile.lock

+ 1 - 3
BFStuckPointKit.podspec

@@ -24,9 +24,6 @@ TODO: Add long description of the pod here.
   s.requires_arc = true
   s.static_framework = true
   s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-all_load','ENABLE_BITCODE' => 'NO' }
-  s.resource_bundles = {
-    'BFStuckPointKit_Resources' => ['BFStuckPointKit/Assets/**/*']
-  }
   s.resource_bundles = {
     'BFStuckPointKit_Resources' => ['BFStuckPointKit/Assets/**/*.xcassets', 'BFStuckPointKit/Assets/Resources/*']
   }
@@ -37,6 +34,7 @@ TODO: Add long description of the pod here.
   s.dependency 'BFUIKit'
   s.dependency 'BFMaterialKit'
   s.dependency 'BFMediaKit'
+  s.dependency 'BFAnalyzeKit'
   s.dependency 'AliyunOSSiOS'             ,'2.10.10'  # 阿里云组件
   s.dependency 'WechatOpenSDK-Swift'      ,'1.8.7.1'  # 微信组件
   s.dependency 'MJRefresh'                ,'3.7.2'    # 刷新组件

+ 20 - 7
BFStuckPointKit/Classes/BFUtils/PQAliOssUtil.swift

@@ -9,6 +9,7 @@
 import UIKit
 import BFCommonKit
 import BFNetRequestKit
+import BFAnalyzeKit
 
 // MARK: - 阿里OSS工具类
 
@@ -281,7 +282,7 @@ public class PQAliOssUtil: NSObject {
                 if videoSource != nil && (videoSource?.count ?? 0) > 0 {
                     extParams = ["source":videoSource ?? ""]
                 }
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil,extParams: extParams, remindmsg: "上传相关")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil,extParams: extParams, commonParams: commonParams())
             } else {
                 debugPrint("上传失败 \(osstask.error!)")
 
@@ -304,7 +305,7 @@ public class PQAliOssUtil: NSObject {
                 if videoSource != nil && (videoSource?.count ?? 0) > 0 {
                     extParams = ["source":videoSource ?? ""]
                 }
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil,extParams: extParams, remindmsg: "上传相关")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil,extParams: extParams, commonParams: commonParams())
             }
             return nil
         })
@@ -313,7 +314,7 @@ public class PQAliOssUtil: NSObject {
         if videoSource != nil && (videoSource?.count ?? 0) > 0 {
             extParams = ["source":videoSource ?? ""]
         }
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_start, pageSource: .sp_upload_coverSelect,extParams: extParams, remindmsg: "上传相关")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_start, pageSource: nil,extParams: extParams, commonParams: commonParams())
         return .shared
     }
 
@@ -424,7 +425,7 @@ public class PQAliOssUtil: NSObject {
                         extParams = ["source":videoSource ?? ""]
                     }
                     // 上传完成
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil,extParams: extParams, remindmsg: "上传相关")
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil,extParams: extParams, commonParams: commonParams())
                 } else {
                     debugPrint("上传失败 \(osstask.error!)")
                     request.callbackParam = ["code": (osstask.error! as NSError).code, "objectKey": objectKey, "msg": osstask.error?.localizedDescription ?? ""]
@@ -442,7 +443,11 @@ public class PQAliOssUtil: NSObject {
                         }
                     }
                     // 上传失败
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil, remindmsg: "上传相关")
+                    var extParams:Dictionary<String,Any>?
+                    if videoSource != nil && (videoSource?.count ?? 0) > 0 {
+                        extParams = ["source":videoSource ?? ""]
+                    }
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil,extParams: extParams, commonParams: commonParams())
                 }
                 return nil
             }).waitUntilFinished()
@@ -469,7 +474,11 @@ public class PQAliOssUtil: NSObject {
                         postNotification(name: cUploadSuccessKey, userInfo: ["code": 1, "objectKey": objectKey, "msg": "上传成功"])
                     }
                     // 上传完成
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil, remindmsg: "上传相关")
+                    var extParams:Dictionary<String,Any>?
+                    if videoSource != nil && (videoSource?.count ?? 0) > 0 {
+                        extParams = ["source":videoSource ?? ""]
+                    }
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_success, pageSource: nil,extParams: extParams, commonParams: commonParams())
                 } else {
                     debugPrint("上传失败 \(osstask.error!)")
                     request.callbackParam = ["code": (osstask.error! as NSError).code, "objectKey": objectKey, "msg": osstask.error?.localizedDescription ?? ""]
@@ -487,7 +496,11 @@ public class PQAliOssUtil: NSObject {
                         }
                     }
                     // 上传失败
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil, remindmsg: "上传相关")
+                    var extParams:Dictionary<String,Any>?
+                    if videoSource != nil && (videoSource?.count ?? 0) > 0 {
+                        extParams = ["source":videoSource ?? ""]
+                    }
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_fail, pageSource: nil,extParams: extParams, commonParams: commonParams())
                 }
                 return nil
             })

+ 1 - 0
BFStuckPointKit/Classes/BFUtils/PQSingletoRealmUtil.swift

@@ -10,6 +10,7 @@ import RealmSwift
 import UIKit
 import BFCommonKit
 import BFMediaKit
+import BFUIKit
 
 public class PQSingletoRealmUtil: NSObject {
     public  var schemaVersion : UInt64 = 40

+ 7 - 5
BFStuckPointKit/Classes/BFUtils/PQSingletoVideoPlayer.swift

@@ -9,6 +9,7 @@
 
 import BFCommonKit
 import UIKit
+import BFAnalyzeKit
 
 public class PQSingletoVideoPlayer: NSObject {
     public static let shared = PQSingletoVideoPlayer()
@@ -107,7 +108,7 @@ public class PQSingletoVideoPlayer: NSObject {
                 } else if (playVideoData?.pageSource == .sp_cmunit_newTopicDetail || playVideoData?.pageSource == .sp_cmunit_hotTopicDetail) {
                     extParams = ["topicId": "\(playVideoData?.topicData?["id"] ?? "")"]
                 }
-                PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_pLayaction, businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams, remindmsg: "播放时长统计")
+                BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_pLayaction,businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams,commonParams: commonParams())
                 lastPlaybackTime = player.currentPlaybackTime()
             }
             player.removeVideoWidget()
@@ -156,7 +157,7 @@ public class PQSingletoVideoPlayer: NSObject {
             } else if (playVideoData?.pageSource == .sp_cmunit_newTopicDetail || playVideoData?.pageSource == .sp_cmunit_hotTopicDetail) {
                 extParams = ["topicId": "\(playVideoData?.topicData?["id"] ?? "")"]
             }
-            PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_pLayaction, businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams, remindmsg: "播放时长统计")
+            BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_pLayaction,businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams,commonParams: commonParams())
             lastPlaybackTime = player.currentPlaybackTime()
         }
     }
@@ -178,7 +179,7 @@ public class PQSingletoVideoPlayer: NSObject {
             } else if (playVideoData?.pageSource == .sp_cmunit_newTopicDetail || playVideoData?.pageSource == .sp_cmunit_hotTopicDetail) {
                 extParams = ["topicId": "\(playVideoData?.topicData?["id"] ?? "")"]
             }
-            PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_pLayaction, businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams, remindmsg: "播放时长统计")
+            BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_pLayaction,businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams,commonParams: commonParams())
             lastPlaybackTime = player.currentPlaybackTime()
         }
     }
@@ -203,7 +204,7 @@ public class PQSingletoVideoPlayer: NSObject {
             } else if (playVideoData?.pageSource == .sp_cmunit_newTopicDetail || playVideoData?.pageSource == .sp_cmunit_hotTopicDetail){
                 extParams = ["topicId": "\(playVideoData?.topicData?["id"] ?? "")"]
             }
-            PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_pLayaction, businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams, remindmsg: "播放时长统计")
+            BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_pLayaction,businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams,commonParams: commonParams())
             lastPlaybackTime = player.currentPlaybackTime()
         }
     }
@@ -378,7 +379,7 @@ extension PQSingletoVideoPlayer: TXVodPlayListener {
                 } else if (playVideoData?.pageSource == .sp_cmunit_newTopicDetail || playVideoData?.pageSource == .sp_cmunit_hotTopicDetail) {
                     extParams = ["topicId": "\(playVideoData?.topicData?["id"] ?? "")"]
                 }
-                PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_pLayaction, businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams, remindmsg: "播放时长统计")
+                BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_pLayaction,businessType: .bt_videoPlayDuration, objectType: nil, pageSource: playVideoData?.pageSource ?? .sp_cmunit_recommend, eventData: ["pageSource": (playVideoData?.pageSource ?? .sp_cmunit_recommend).rawValue, "playDuration": Int64(playDuration * 1000), "playId": playId, "uid": "\(playVideoData?.user?["uid"] ?? "")", "videoId": playVideoData?.id ?? 0], extParams: extParams,commonParams: commonParams())
                 lastPlaybackTime = player.currentPlaybackTime()
             }
         case PLAY_ERR_NET_DISCONNECT.rawValue, -2301: // 重连失败
@@ -430,6 +431,7 @@ extension PQSingletoVideoPlayer: TXVodPlayListener {
                         extParams["followedUid"] = "all"
                     }
                 }
+                
                 PQEventTrackViewModel.videoRelationReportUpload(reportLogType: .reportLogType_Action, videoData: playVideoData, pageSource: nil, businessType: .bt_videoPlayError, objectType: nil, extParams: extParams, shareId: nil, videoIds: nil, playId: playId)
             }
         case PLAY_WARNING_RECONNECT.rawValue: // 断线重连已启动重新连接

+ 0 - 129
BFStuckPointKit/Classes/BFUtils/PQSingletonEnvUtil.swift

@@ -1,129 +0,0 @@
-//
-//  PQSingletonEnvUtil.swift
-//  PQSpeed
-//
-//  Created by lieyunye on 2020/5/27.
-//  Copyright © 2020 BytesFlow. All rights reserved.
-//
-
-import Foundation
-import KeychainAccess
-import BFCommonKit
-
-// add by ak 开发和发布版本的不同设置  1 为正式版本发布的苹果  0 是测试 XXXX 上传苹果前要检查
-public let DEVELOPMENT_ENVIRONMENT: Int = 1
-
-public enum ENVMode: String {
-    case ENVModeOnline // 线上环境
-    case ENVModePre // 预发布环境
-    case ENVModeTest // 测试环境
-    case ENVModeBJPre // 北京区预发布环境
-}
-
-public class PQENVUtil {
-    public var envMode: ENVMode {
-        let config = NSDictionary(contentsOfFile: Bundle.main.path(forResource: "PQConfig.plist", ofType: nil) ?? "")
-        BFLog(message: "config  is  = \(String(describing: config))")
-
-        let enStr: String = (config?.object(forKey: "ENVMode") ?? "ENVModeOnline") as! String
-        BFLog(message: "ENVMode is \(enStr)")
-
-        return ENVMode(rawValue: enStr)!
-    }
-
-     static public let shared: PQENVUtil = {
-        let instance = PQENVUtil()
-        // setup code
-
-        return instance
-    }()
-
-    // 票圈视频主域名
-   public var longvideoapi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testLongvideoapi
-        case .ENVModePre:
-            return preLongvideoapi
-        case .ENVModeBJPre:
-            return preBJLongvideoapi
-        default:
-            return onlineLongvideoapi
-        }
-    }
-
-    // 票圈视频域名(热榜)
-   public var distribution: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testDistributionApi
-        case .ENVModePre:
-            return preDistributionApi
-        case .ENVModeBJPre:
-            return preBJDistributionApi
-        default:
-            return onlineDistributionApi
-        }
-    }
-
-    // 通用域名-eg:数据上报
-    public var commonapi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testCommonapi
-        case .ENVModePre:
-            return preCommonapi
-        case .ENVModeBJPre:
-            return preBJCommonapi
-        default:
-            return onlineCommonapi
-        }
-    }
-
-    // 视频创作相关域名
-    public var clipapiapi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testLongvideoapi
-        case .ENVModePre, .ENVModeBJPre:
-            return preLongvideoapi
-        default:
-            return onlineClipapiApi
-        }
-    }
-
-    // 创作工具搜索素材相关域名
-    public var materialSearchApi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testMaterialSearchApi
-        case .ENVModePre, .ENVModeBJPre:
-            return preMaterialSearchApi
-        default:
-            return onlineMaterialSearchApi
-        }
-    }
-
-    // 消息相关域名
-    public var messageApi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testMessageApi
-        case .ENVModePre, .ENVModeBJPre:
-            return preMessageApi
-        default:
-            return onlineMessageApi
-        }
-    }
-    // 票圈Api域名
-    public var pqTvApi: String {
-        switch envMode {
-        case .ENVModeTest:
-            return testPQTvApi
-        case .ENVModePre, .ENVModeBJPre:
-            return prePQTvApi
-        default:
-            return onlinePQTvApi
-        }
-    }
-}

+ 5 - 18
BFStuckPointKit/Classes/Controller/PQEditMusicSearchController.swift

@@ -9,6 +9,7 @@ import Foundation
 import BFUIKit
 import BFMediaKit
 import BFCommonKit
+import BFAnalyzeKit
 
 class PQEditMusicSearchController: BFBaseViewController {
     // 当前播放的音乐
@@ -92,16 +93,13 @@ class PQEditMusicSearchController: BFBaseViewController {
             if !isTagsClick {
                 self?.view.endEditing(true)
                 if !(itemData is BFEmptyModel) {
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearchAudition, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(itemData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(itemData as? PQVoiceModel)?.musicId ?? ""], remindmsg: "")
-                    
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearchAudition, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(itemData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(itemData as? PQVoiceModel)?.musicId ?? ""],commonParams: commonParams())
                     self?.playStuckPointMusic(itemData: itemData as? PQVoiceModel)
                 }
             }
         }
         searchController.btnClickHandle = { [weak self] btn, bgmData in
-            
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearchSelect, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(bgmData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(bgmData as? PQVoiceModel)?.musicId ?? ""], remindmsg: "")
-            
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearchSelect, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(bgmData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(bgmData as? PQVoiceModel)?.musicId ?? ""],commonParams: commonParams())
             // 使用音乐
             self?.backBtnClick()
             if(self?.btnClickHandle != nil){
@@ -129,9 +127,7 @@ class PQEditMusicSearchController: BFBaseViewController {
     }
     override func viewWillAppear(_ animated: Bool) {
         super.viewDidAppear(animated)
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_shanyinApp_musicVideoPreview_musicSearch, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
-
-
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_shanyinApp_musicVideoPreview_musicSearch, pageSource: .sp_shanyinApp_main,commonParams: commonParams())
     }
     override func viewDidLoad() {
         super.viewDidLoad()
@@ -204,14 +200,6 @@ class PQEditMusicSearchController: BFBaseViewController {
                     PQNotification.post(name: NSNotification.Name(rawValue: "MusicContentCellIconLoadingAnimationStop"), object: nil)
                 }
             }
-//            let player = TXVodPlayer()
-//            let config = TXVodPlayConfig()
-//            config.cacheFolderPath = videoCacheDirectory
-//            config.maxCacheItems = 0
-//            player.config = config
-            ////            player.vodDelegate = self
-//            player.setRenderMode(.RENDER_MODE_FILL_EDGE)
-//            player.startPlay("https://clipres.yishihui.com/longvideo/material/voice/prod/20210512/MUSIC_QQ_000T1Ws32MWrUj")
             currentPlayData = itemData
         } else if itemData != nil, avPlayer.rate == 0.0 {
             avPlayer.play()
@@ -304,8 +292,7 @@ extension PQEditMusicSearchController: UITextFieldDelegate {
 
     func textFieldShouldReturn(_ textField: UITextField) -> Bool {
         loadSearchData()
-        
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearch, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSearch, pageSource: .sp_shanyinApp_main,commonParams: commonParams())
         view.endEditing(true)
         if textField.text == nil || (textField.text?.count ?? 0) <= 0 {
             cShowHUB(superView: nil, msg: "请先输入搜索内容")

+ 31 - 32
BFStuckPointKit/Classes/Controller/PQStuckPointEditerController.swift

@@ -13,13 +13,15 @@ public enum createStickersModel: Int {
     case createStickersModelOnlyMusic = 3 // 仅配乐
 }
 
+import BFAnalyzeKit
 import BFCommonKit
+import BFUIKit
+import BFMediaKit
 import Foundation
 import ObjectMapper
 import Photos
 import RealmSwift
 import UIKit
-import BFMediaKit
 
 class PQStuckPointEditerController: BFBaseViewController {
     // 是否导出视频成功
@@ -167,11 +169,11 @@ class PQStuckPointEditerController: BFBaseViewController {
 
             // 下面都是统计
             if self?.currentCreateStickersModel == .createStickersModelPoint {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectMusicVideoRhythm, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "点击上报:选择节奏")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectMusicVideoRhythm, pageSource: .sp_stuck_previewSyncedUp, commonParams: commonParams())
             } else if self?.currentCreateStickersModel == .createStickersModelSpeed {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectSpeedRhythm, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "点击上报:选择节奏")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectSpeedRhythm, pageSource: .sp_stuck_previewSyncedUp, commonParams: commonParams())
             } else if self?.currentCreateStickersModel == .createStickersModelOnlyMusic {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectMusicVideoRepeatRhythm, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "点击上报:选择节奏")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectMusicVideoRepeatRhythm, pageSource: .sp_stuck_previewSyncedUp, commonParams: commonParams())
             }
         }
         return sustomSwitchView
@@ -337,7 +339,7 @@ class PQStuckPointEditerController: BFBaseViewController {
         speedStuckBtn.addTarget(self, action: #selector(editModelClick1(sender:)), for: .touchUpInside)
         speedStuckBtn.setTitle("快慢速卡点", for: .normal)
         speedStuckBtn.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular)
-        jumpPointBtn.backgroundColor =  BFConfig.shared.pointEditNamalBackgroundColor
+        jumpPointBtn.backgroundColor = BFConfig.shared.pointEditNamalBackgroundColor
         speedStuckBtn.setTitleColor(UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue), for: .selected)
         speedStuckBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#959595"), for: .normal)
         speedStuckBtn.addCorner(corner: 5)
@@ -364,7 +366,7 @@ class PQStuckPointEditerController: BFBaseViewController {
 
         jumpPointBtn.setTitle("跳跃卡点", for: .normal)
         jumpPointBtn.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular)
-        jumpPointBtn.backgroundColor =  BFConfig.shared.pointEditNamalBackgroundColor
+        jumpPointBtn.backgroundColor = BFConfig.shared.pointEditNamalBackgroundColor
         jumpPointBtn.setTitleColor(UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue), for: .selected)
         jumpPointBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#959595"), for: .normal)
         jumpPointBtn.imagePosition(at: .top, space: 8)
@@ -391,7 +393,7 @@ class PQStuckPointEditerController: BFBaseViewController {
 
         onlyMusicBtn.setTitle("仅配乐", for: .normal)
         onlyMusicBtn.titleLabel?.font = UIFont.systemFont(ofSize: 13, weight: .regular)
-        onlyMusicBtn.backgroundColor =  BFConfig.shared.pointEditNamalBackgroundColor
+        onlyMusicBtn.backgroundColor = BFConfig.shared.pointEditNamalBackgroundColor
         onlyMusicBtn.setTitleColor(UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue), for: .selected)
         onlyMusicBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#959595"), for: .normal)
         onlyMusicBtn.addCorner(corner: 5)
@@ -554,7 +556,7 @@ class PQStuckPointEditerController: BFBaseViewController {
         super.backBtnClick()
 //        playerView.pause()
         // 点击上报:返回按钮
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_previewSyncedUp, commonParams: commonParams())
     }
 
     // 使用选择音乐 调用情况:1,操作面板直接选择 ,2 搜索界面点击使用
@@ -600,8 +602,7 @@ class PQStuckPointEditerController: BFBaseViewController {
         musicEditerBtn.isSelected = false
         pointEditBGView.isHidden = false
         musicEditBGView.isHidden = true
-
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_videoTab, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_videoTab, pageSource: .sp_shanyinApp_main, commonParams: commonParams())
     }
 
     // 音乐编辑
@@ -612,8 +613,7 @@ class PQStuckPointEditerController: BFBaseViewController {
         pointEditBGView.isHidden = true
 
         musicEditBGView.showData()
-
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicTab, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicTab, pageSource: .sp_shanyinApp_main, commonParams: commonParams())
     }
 
     @objc func editModelClick1(sender: UIButton) {
@@ -635,11 +635,11 @@ class PQStuckPointEditerController: BFBaseViewController {
             return
         }
         lastEditModelBtn?.isSelected = false
-        //设置取消选中的背景色
+        // 设置取消选中的背景色
         lastEditModelBtn?.backgroundColor = BFConfig.shared.pointEditNamalBackgroundColor
         sender.isSelected = !sender.isSelected
         lastEditModelBtn = sender
-        //设置选中的背景色
+        // 设置选中的背景色
         let styleColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
         lastEditModelBtn?.backgroundColor = UIColor(red: styleColor.rgbaf[0], green: styleColor.rgbaf[1], blue: styleColor.rgbaf[2], alpha: 0.15)
 
@@ -698,7 +698,7 @@ class PQStuckPointEditerController: BFBaseViewController {
             currentCreateStickersModel = .createStickersModelSpeed
 
             if reportLog {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternSpeed, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternSpeed, pageSource: .sp_shanyinApp_main, commonParams: commonParams())
             }
 
         } else if sender.tag == 2 { // 跳跃卡点
@@ -707,7 +707,7 @@ class PQStuckPointEditerController: BFBaseViewController {
             currentCreateStickersModel = .createStickersModelPoint
 
             if reportLog {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternMusicVideo, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternMusicVideo, pageSource: .sp_shanyinApp_main, commonParams: commonParams())
             }
 
         } else if sender.tag == 3 { // 仅音乐
@@ -715,7 +715,7 @@ class PQStuckPointEditerController: BFBaseViewController {
             jumpPointBtnGifName = "jumpPoint_n_pq"
             currentCreateStickersModel = .createStickersModelOnlyMusic
             if reportLog {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternBgm, pageSource: .sp_shanyinApp_main, extParams: nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectPatternBgm, pageSource: .sp_shanyinApp_main, commonParams: commonParams())
             }
         }
         settingPlayerView()
@@ -765,8 +765,7 @@ class PQStuckPointEditerController: BFBaseViewController {
         prepareMeta()
 
         // 曝光上报:预览页面曝光上报
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_previewSyncedUp, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(曝光上报:预览页面曝光上报)")
-
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_previewSyncedUp, pageSource: .sp_stuck_previewSyncedUp, commonParams: commonParams())
         // 从选择的素材中 第一个素材设置封面
         if selectedPhotoData != nil, selectedPhotoData!.count > 0 {
             let photo = selectedPhotoData!.first!
@@ -954,12 +953,12 @@ class PQStuckPointEditerController: BFBaseViewController {
             videoExporter.playeTimeRange = playeTimeRange
             videoExporter.mStickers = mStickers
             videoExporter.audioMixModel = stuckPointMusicData
-            videoExporter.coverImage = selectedMetarialData?.first?.coverImageUI ?? UIImage.init()
+            videoExporter.coverImage = selectedMetarialData?.first?.coverImageUI ?? UIImage()
             videoExporter.editProjectModel = tempModel
             navigationController?.pushViewController(videoExporter, animated: true)
         }
         // 点击上报:去合成
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_commit, pageSource: .sp_stuck_previewSyncedUp, extParams: ["musicName": stuckPointMusicData?.musicName ?? "", "musicId": stuckPointMusicData?.musicId ?? "", "rhythmNumber": stuckPointMusicData?.speed ?? 2, "duration": ((stuckPointMusicData?.endTime ?? 0) - (stuckPointMusicData?.startTime ?? 0)) * 1000], remindmsg: "点击上报:去合成")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_commit, pageSource: .sp_stuck_previewSyncedUp, extParams: ["musicName": stuckPointMusicData?.musicName ?? "", "musicId": stuckPointMusicData?.musicId ?? "", "rhythmNumber": stuckPointMusicData?.speed ?? 2, "duration": ((stuckPointMusicData?.endTime ?? 0) - (stuckPointMusicData?.startTime ?? 0)) * 1000], commonParams: commonParams())
     }
 
     override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
@@ -1848,7 +1847,7 @@ extension PQStuckPointEditerController {
                     self?.synchroMarskView.removeMarskView()
                     cShowHUB(superView: nil, msg: "音乐信息加载失败,请重新选择音乐")
 //                    BFUploadRemindView.showUploadRemindView(title: nil, attributedTitle: NSAttributedString(string: "加载音乐失败,请重新选择音乐"), summary: "", confirmTitle: nil) { [weak self] _, _ in
-                        self?.navigationController?.popViewController(animated: true)
+                    self?.navigationController?.popViewController(animated: true)
                 }
             }
         } else {
@@ -1890,7 +1889,9 @@ extension PQStuckPointEditerController {
                             let tempPhoto = self.selectedMetarialData?.first(where: { material in
                                 material.asset == photo.asset
                             })
-// MARK: SanW-2021.11.15-不在导出到沙盒,直接用本地地址
+
+                            // MARK: SanW-2021.11.15-不在导出到沙盒,直接用本地地址
+
                             tempPhoto?.locationPath = fileName.replacingOccurrences(of: "file://", with: "")
                             dispatchGroup.leave()
 //                            if fileName.count > 0 {
@@ -2035,17 +2036,15 @@ extension PQStuckPointEditerController {
                 default: break
                 }
                 return
-            } 
-             // 跳跃卡点不可用
-             if selectedTotalDuration < 6 && selectedDataCount != selectedImageDataCount {
-                
+            }
+            // 跳跃卡点不可用
+            if selectedTotalDuration < 6, selectedDataCount != selectedImageDataCount {
                 let styleColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
-                jumpPointBtn.setTitleColor(UIColor.init(red: styleColor.rgbaf[0], green: styleColor.rgbaf[1], blue: styleColor.rgbaf[2], alpha: 0.3), for: .selected)
-                
+                jumpPointBtn.setTitleColor(UIColor(red: styleColor.rgbaf[0], green: styleColor.rgbaf[1], blue: styleColor.rgbaf[2], alpha: 0.3), for: .selected)
+
                 let pointEditNamalBackgroundColor = BFConfig.shared.pointEditNamalBackgroundColor
-                jumpPointBtn.backgroundColor = UIColor.init(red: pointEditNamalBackgroundColor.rgbaf[0], green: pointEditNamalBackgroundColor.rgbaf[1], blue: pointEditNamalBackgroundColor.rgbaf[2], alpha: 0.3)
- 
-             }
+                jumpPointBtn.backgroundColor = UIColor(red: pointEditNamalBackgroundColor.rgbaf[0], green: pointEditNamalBackgroundColor.rgbaf[1], blue: pointEditNamalBackgroundColor.rgbaf[2], alpha: 0.3)
+            }
             /*
              文档规则 https://w42nne6hzg.feishu.cn/docs/doccnQZm1uCfkU4QtJb5fLxYk4d#
              */

+ 5 - 5
BFStuckPointKit/Classes/Controller/PQStuckPointMaterialController.swift

@@ -8,10 +8,11 @@
 
 import UIKit
 import Photos
-@_exported import BFUIKit
+import BFUIKit
 import BFMaterialKit
 import BFMediaKit
 import BFCommonKit
+import BFAnalyzeKit
 
 public class PQStuckPointMaterialController: BFBaseViewController {
     public var isToPublicHandle:((_ isReCreate:Bool,_ selectedTotalDuration: Float64,_ selectedDataCount:Int,_ selectedImageDataCount: Int,_ mStickers: [PQEditVisionTrackMaterialsModel]?,_ stuckPointMusicData: PQVoiceModel?,_ editProjectModel: PQEditProjectModel?,_ rhythmMode:createStickersModel,_ speedMin:Float,_ speedMax:Float,_ audioTime:Float,_ clipAudioRange:CMTimeRange,_ playeTimeRange:CMTimeRange) -> Void)?
@@ -230,7 +231,7 @@ public class PQStuckPointMaterialController: BFBaseViewController {
         view.bringSubviewToFront(navHeadImageView!)
         view.insertSubview(materialListView, belowSubview: bottomRemindView)
         // 卡点音乐素材选择曝光上报
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_selectSyncedUpMaterial, pageSource: .sp_stuck_selectMaterial, extParams: nil, remindmsg: "卡点视频数据上报-(曝光上报:卡点视频素材选择页)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_selectSyncedUpMaterial, pageSource: .sp_stuck_selectMaterial, commonParams: commonParams())
         // 注册通知
         addNotification(self, selector: #selector(dismissVc), name: cFinishedPublishedNotiKey, object: nil)
     }
@@ -287,9 +288,8 @@ public class PQStuckPointMaterialController: BFBaseViewController {
                     stuckPointMusicVc.selectedPhotoData = photoMaterialVc.selectedPhotoData
                     navigationController?.pushViewController(stuckPointMusicVc, animated: true)
                 }
-             
                 // 卡点视频素材确认按钮
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_confirmMaterial, pageSource: .sp_stuck_selectMaterial, extParams: ["materialNumber": selectedDataCount], remindmsg: "卡点视频数据上报-(点击上报:卡点视频素材确认按钮)")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_confirmMaterial, pageSource: .sp_stuck_selectMaterial,extParams: ["materialNumber": selectedDataCount], commonParams: commonParams())
             }
         default:
             break
@@ -302,7 +302,7 @@ public class PQStuckPointMaterialController: BFBaseViewController {
             postNotification(name: cFinishedPublishedNotiKey)
         }
         // 卡点视频返回按钮点击上报
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_selectMaterial, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_selectMaterial, commonParams: commonParams())
     }
 
     // 返回

+ 9 - 8
BFStuckPointKit/Classes/Controller/PQStuckPointMusicContentController.swift

@@ -10,6 +10,7 @@ import BFCommonKit
 import BFUIKit
 import UIKit
 import BFMediaKit
+import BFAnalyzeKit
 
 class PQStuckPointMusicContentController: BFBaseViewController {
     var itemList: [Any] = Array<Any>.init() // 所有分类数据
@@ -202,7 +203,7 @@ extension PQStuckPointMusicContentController: UICollectionViewDelegate, UICollec
                 }
                 if tagsData != nil {
                     // 点击上报:选择音乐分类下的 TAG
-                    PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusicCategoryTag, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: ["categoryName": tagsData?.tagName ?? "", "categoryId": tagsData?.tagId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:选择音乐分类下的 TAG)")
+                    BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusicCategoryTag, pageSource: .sp_stuck_selectSynceedUpMusic,extParams:["categoryName": tagsData?.tagName ?? "", "categoryId": tagsData?.tagId ?? ""], commonParams: commonParams())
                 }
             }
             return cell
@@ -227,10 +228,10 @@ extension PQStuckPointMusicContentController: UICollectionViewDelegate, UICollec
                 if bgmData is PQVoiceModel {
                     if self?.contentType == .page {
                         // 卡点视频音乐选择音乐素材
-                        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusic, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: ["musicName": (bgmData as? PQVoiceModel)?.musicName ?? "", "musicId": (bgmData as? PQVoiceModel)?.musicId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:选择音乐素材)")
+                        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusic, pageSource: .sp_stuck_selectSynceedUpMusic,extParams:["musicName": (bgmData as? PQVoiceModel)?.musicName ?? "", "musicId": (bgmData as? PQVoiceModel)?.musicId ?? ""], commonParams: commonParams())
                     } else if self?.contentType == .serach {
                         // 点击上报:选择音乐素材
-                        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseSearchMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: ["musicName": (bgmData as? PQVoiceModel)?.musicName ?? "", "musicId": (bgmData as? PQVoiceModel)?.musicId ?? "", "isHotMusic": self?.itemList.first is BFEmptyModel], remindmsg: "卡点视频数据上报-(点击上报:选择音乐素材)")
+                        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseSearchMusic, pageSource: .sp_stuck_searchSyncedUpMusic,extParams:["musicName": (bgmData as? PQVoiceModel)?.musicName ?? "", "musicId": (bgmData as? PQVoiceModel)?.musicId ?? "", "isHotMusic": self?.itemList.first is BFEmptyModel], commonParams: commonParams())
                     }
                 }
             }
@@ -290,14 +291,14 @@ extension PQStuckPointMusicContentController: UICollectionViewDelegate, UICollec
         if itemList[indexPath.item] is PQVoiceModel {
             if contentType == .page {
                 // 卡点视频音乐素材试听
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_auditionMusic, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: ["musicName": (itemList[indexPath.item] as? PQVoiceModel)?.musicName ?? "", "musicId": (itemList[indexPath.item] as? PQVoiceModel)?.musicId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:音乐素材试听)")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_auditionMusic, pageSource: .sp_stuck_selectSynceedUpMusic,extParams:["musicName": (itemList[indexPath.item] as? PQVoiceModel)?.musicName ?? "", "musicId": (itemList[indexPath.item] as? PQVoiceModel)?.musicId ?? ""], commonParams: commonParams())
             } else if contentType == .serach {
                 // 点击上报:试听音乐素材
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_auditionSearchMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: ["musicName": (itemList[indexPath.item] as? PQVoiceModel)?.musicName ?? "", "musicId": (itemList[indexPath.item] as? PQVoiceModel)?.musicId ?? "", "isHotMusic": itemList.first is BFEmptyModel], remindmsg: "卡点视频数据上报-(点击上报:试听音乐素材)")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_auditionSearchMusic, pageSource: .sp_stuck_searchSyncedUpMusic,extParams:["musicName": (itemList[indexPath.item] as? PQVoiceModel)?.musicName ?? "", "musicId": (itemList[indexPath.item] as? PQVoiceModel)?.musicId ?? "", "isHotMusic": itemList.first is BFEmptyModel], commonParams: commonParams())
             }
         } else if contentType == .catagery && (itemList[indexPath.item] is PQStuckPointMusicTagsModel) {
             // 点击上报:选择音乐分类
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusicCategory, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: ["categoryName": (itemList[indexPath.item] as? PQStuckPointMusicTagsModel)?.tagName ?? "", "categoryId": (itemList[indexPath.item] as? PQStuckPointMusicTagsModel)?.tagId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:选择音乐分类)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_chooseMusicCategory, pageSource: .sp_stuck_selectSynceedUpMusic,extParams:["categoryName": (itemList[indexPath.item] as? PQStuckPointMusicTagsModel)?.tagName ?? "", "categoryId": (itemList[indexPath.item] as? PQStuckPointMusicTagsModel)?.tagId ?? ""], commonParams: commonParams())
         }
     }
 
@@ -312,10 +313,10 @@ extension PQStuckPointMusicContentController: UICollectionViewDelegate, UICollec
         if itemData is PQVoiceModel {
             if contentType == .page {
                 // 卡点视频音乐音乐素材曝光
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_view_syncedUpMusic, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: ["musicName": (itemData as? PQVoiceModel)?.musicName ?? "", "musicId": (itemData as? PQVoiceModel)?.musicId ?? ""], remindmsg: "卡点视频数据上报-(曝光上报:音乐素材曝光)")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_view_syncedUpMusic, pageSource: .sp_stuck_selectSynceedUpMusic,extParams:["musicName": (itemData as? PQVoiceModel)?.musicName ?? "", "musicId": (itemData as? PQVoiceModel)?.musicId ?? ""], commonParams: commonParams())
             } else if contentType == .serach {
                 // 曝光上报:搜索结果音乐素材曝光
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_view_searchMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: ["musicName": (itemData as? PQVoiceModel)?.musicName ?? "", "musicId": (itemData as? PQVoiceModel)?.musicId ?? "", "isHotMusic": itemList.first is BFEmptyModel], remindmsg: "卡点视频数据上报-(曝光上报:搜索结果音乐素材曝光)")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_view_searchMusic, pageSource: .sp_stuck_searchSyncedUpMusic,extParams:["musicName": (itemData as? PQVoiceModel)?.musicName ?? "", "musicId": (itemData as? PQVoiceModel)?.musicId ?? "", "isHotMusic": itemList.first is BFEmptyModel], commonParams: commonParams())
             }
         }
     }

+ 5 - 4
BFStuckPointKit/Classes/Controller/PQStuckPointMusicController.swift

@@ -12,6 +12,7 @@ import Photos
 import BFUIKit
 import BFMediaKit
 import BFCommonKit
+import BFAnalyzeKit
 
 class PQStuckPointMusicController: BFBaseViewController {
     // 选中的总时长
@@ -282,7 +283,7 @@ class PQStuckPointMusicController: BFBaseViewController {
             }
         }
         // 卡点视频音乐选择曝光上报
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_selectSyncedUpMusic, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: nil, remindmsg: "卡点视频数据上报-(曝光上报:卡点视频音乐选择页)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_selectSyncedUpMusic, pageSource: .sp_stuck_selectSynceedUpMusic,commonParams: commonParams())
     }
 
     override func viewWillAppear(_ animated: Bool) {
@@ -493,11 +494,11 @@ class PQStuckPointMusicController: BFBaseViewController {
         if searchController.view.isHidden {
             navigationController?.popViewController(animated: true)
             // 点击上报:选择音乐分类
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_selectSynceedUpMusic, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_selectSynceedUpMusic,commonParams: commonParams())
         } else {
             hiddenSearchController()
             // 点击上报:返回按钮
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_searchSyncedUpMusic,commonParams: commonParams())
         }
     }
 
@@ -572,7 +573,7 @@ extension PQStuckPointMusicController: UITextFieldDelegate {
         searchController.hotList = hotList
         playStuckPointMusic(itemData: nil)
         // 曝光上报:音乐素材搜索页
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_searchSyncedUpMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: nil, remindmsg: "卡点视频数据上报-(曝光上报:音乐素材搜索页)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_searchSyncedUpMusic, pageSource: .sp_stuck_searchSyncedUpMusic,commonParams: commonParams())
     }
 
     /// 键盘将要隐藏

+ 2 - 1
BFStuckPointKit/Classes/Controller/PQStuckPointMusicSearchController.swift

@@ -10,6 +10,7 @@ import UIKit
 import BFCommonKit
 import BFUIKit
 import BFMediaKit
+import BFAnalyzeKit
 
 class PQStuckPointMusicSearchController: PQStuckPointMusicContentController {
     // 选中的总时长
@@ -80,7 +81,7 @@ class PQStuckPointMusicSearchController: PQStuckPointMusicContentController {
                 self?.configMusicListData(isRefresh: isRefresh, musicListData: bgmList)
             }
             // 点击上报:用户在搜索框输入文字然后按回车-返回结果后上报
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_searchSyncedUpMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: ["searchText": self?.searchWord ?? "", "searchResultNumber": bgmList.count, "isSuccess": msg == nil], remindmsg: "卡点视频数据上报-(点击上报:用户在搜索框输入文字然后按回车)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_searchSyncedUpMusic, pageSource: .sp_stuck_searchSyncedUpMusic, extParams: ["searchText": self?.searchWord ?? "", "searchResultNumber": bgmList.count, "isSuccess": msg == nil], commonParams: commonParams())
         }
     }
 

+ 15 - 12
BFStuckPointKit/Classes/Controller/PQStuckPointPublicController.swift

@@ -15,6 +15,7 @@ import Photos
 import UIKit
 import WechatOpenSDK
 import BFMediaKit
+import BFAnalyzeKit
 
 // mdf by ak 按 UI图 下方操作区的高度是固定的, 其它区高度和设备自适应
 public let bottomOprationBgViewHeight: CGFloat = 322.0
@@ -640,7 +641,7 @@ class PQStuckPointPublicController: BFBaseViewController {
         /// 保存草稿
         saveDraftbox()
         // 曝光上报:窗口曝光
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_publishSyncedUp, pageSource: .sp_stuck_publishSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(曝光上报:窗口曝光)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_windowView, objectType: .ot_view_publishSyncedUp, pageSource: .sp_stuck_publishSyncedUp, commonParams: commonParams())
 
         // 取推荐标题
         getTitles()
@@ -703,7 +704,7 @@ class PQStuckPointPublicController: BFBaseViewController {
         avPlayer.pause()
         avPlayer.replaceCurrentItem(with: nil)
         // 点击上报:返回按钮
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_publishSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_publishSyncedUp, extParams: nil, commonParams: commonParams())
     }
 
     // MARK: - 网络监控
@@ -1313,7 +1314,7 @@ extension PQStuckPointPublicController {
 //                                cShowHUB(superView: nil, msg: "视频发布成功")
                 // 发布成功后续操作
                 self?.publicEnd()
-                PQEventTrackViewModel.publishReportUpload(projectId: videoData.projectId, businessType: .bt_publish_success, ossInfo: videoData.stsToken ?? [:], params: ["title": videoData.title ?? "", "videoPath": videoData.uplpadBucketKey ?? "", "descr": videoData.summary ?? ""])
+                BFEventTrackAdaptor.publishReportUpload(projectId: videoData.projectId, businessType: .bt_publish_success, ossInfo: videoData.stsToken ?? [:], params: ["title": videoData.title ?? "", "videoPath": videoData.uplpadBucketKey ?? "", "descr": videoData.summary ?? ""],commonParams: commonParams())
             }
 //                        } else {
 //                            // 图片上传失败
@@ -1361,7 +1362,10 @@ extension PQStuckPointPublicController {
     /// 生成创作工具埋点数据
     /// - Returns: <#description#>
     func getExportEventTrackData() -> PQVideoMakeEventTrackModel? {
-        let eventTrackData = PQVideoMakeEventTrackModel(projectModel: editProjectModel, reCreateData: reCreateData)
+        // MARK: SanW--待修改-2021.12.09
+
+//        let eventTrackData = PQVideoMakeEventTrackModel(projectModel: editProjectModel, reCreateData: reCreateData)
+        let eventTrackData = PQVideoMakeEventTrackModel()
         eventTrackData.entrance = .entranceStuckPointPublic
         eventTrackData.editTimeCost = 0
         eventTrackData.composeTimeCost = (exportEndDate - startExportDate) * 1000
@@ -1386,8 +1390,8 @@ extension PQStuckPointPublicController {
         eventTrackData.syncedUpOriginalMaterialDuration = selectedTotalDuration * 1000
         eventTrackData.syncedUpRhythmNumber = audioMixModel?.speed ?? 2
         eventTrackData.syncedUpVideoDuration = ((audioMixModel?.endTime ?? 0) - (audioMixModel?.startTime ?? 0)) * 1000
-        // add by ak
-        eventTrackData.syncedUpVideoType = rhythmMode
+        // MARK: SanW--待修改-2021.12.09
+//        eventTrackData.syncedUpVideoType = rhythmMode
         eventTrackData.syncedUpVideoSpeedMax = syncedUpVideoSpeedMax
         eventTrackData.syncedUpVideoSpeedMin = syncedUpVideoSpeedMin
 
@@ -1429,7 +1433,7 @@ extension PQStuckPointPublicController {
                 cHiddenHUB(superView: nil)
             }
             // 点击上报:分享微信
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_shareWechat, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:分享微信)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_shareWechat, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], commonParams: commonParams())
         case 2:
             if !(isExportSuccess && isSaveProjectSuccess && isUploadSuccess && isPublicSuccess) {
                 cShowHUB(superView: nil, msg: "视频发布失败,请重新合成")
@@ -1458,11 +1462,11 @@ extension PQStuckPointPublicController {
                 }
             }
             // 点击上报:分享朋友圈
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_shareWechatMoment, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:分享朋友圈)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_shareWechatMoment, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], commonParams: commonParams())
         case 3:
 
             // 点击上报:完成
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_finished, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], remindmsg: "卡点视频数据上报-(点击上报:完成)")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_finished, pageSource: .sp_stuck_publishSyncedUp, extParams: ["videoId": videoData?.uniqueId ?? ""], commonParams: commonParams())
             bf_getCurrentViewController()?.dismiss(animated: false) {
                 bf_getCurrentViewController()?.navigationController?.viewControllers = [bf_getCurrentViewController()?.navigationController?.viewControllers.first ?? BFBaseViewController()]
                 (bf_getRootViewController() as? UITabBarController)?.selectedIndex = 4
@@ -1594,8 +1598,7 @@ extension PQStuckPointPublicController {
         if publicTitleView.inputTV.text.count > 0 {
             publicTitleView.inputTV.text = titleLabel.text
         }
-
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_clickButton_changeTitle, pageSource: .sp_stuck_publishSyncedUp, eventData: ["videoId": videoData?.uniqueId ?? "", "rootPageSource": isReCreate ? "shanyinApp-main-syncedUpMusicRecreate" : "shanyinApp-main-syncedUpMusic"], remindmsg: "")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_clickButton_changeTitle, pageSource: .sp_stuck_publishSyncedUp, eventData: ["videoId": videoData?.uniqueId ?? "", "rootPageSource": isReCreate ? "shanyinApp-main-syncedUpMusicRecreate" : "shanyinApp-main-syncedUpMusic"], commonParams: commonParams())
     }
 
     @objc func settingCoverImage() {
@@ -1632,7 +1635,7 @@ extension PQStuckPointPublicController {
             self?.navigationController?.pushViewController(imageSelected, animated: true)
         }
 
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_clickButton_changeCover, pageSource: .sp_stuck_publishSyncedUp, eventData: ["videoId": videoData?.uniqueId ?? "", "rootPageSource": isReCreate ? "shanyinApp-main-syncedUpMusicRecreate" : "shanyinApp-main-syncedUpMusic"], remindmsg: "")
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_clickButton_changeCover, pageSource: .sp_stuck_publishSyncedUp, eventData: ["videoId": videoData?.uniqueId ?? "", "rootPageSource": isReCreate ? "shanyinApp-main-syncedUpMusicRecreate" : "shanyinApp-main-syncedUpMusic"],commonParams: commonParams())
     }
 
     // 更新标题或封面

+ 0 - 341
BFStuckPointKit/Classes/EventTrack/Model/PQVideoMakeEventTrackModel.swift

@@ -1,341 +0,0 @@
-//
-//  PQVideoMakeEventTrackModel.swift
-//  PQSpeed
-//
-//  Created by SanW on 2021/3/3.
-//  Copyright © 2021 BytesFlow. All rights reserved.
-//
-
-import UIKit
-import BFCommonKit
-import BFMediaKit
-
-public class PQVideoMakeEventTrackModel: NSObject {
-    // 进入创作工具的入口
-    public var entrance: videoMakeEntranceType = .entrancePublicTabCompose {
-        didSet {
-            isPureUploadVideo = entrance == .entrancePublicTabUpload
-            isReproduction = entrance == .entranceReproduction
-        }
-    }
-
-    // 草稿 Id
-    public var draftId: String?
-    // 项目 Id
-    public var projectId: String?
-    // 再创作视频的父 projectId - 仅「再创作」视频存在
-    public var fatherProjectId: String?
-    // 再创作视频的根 projectId - 仅「再创作」视频存在
-    public var rootProjectId: String?
-    // 再编辑视频的父 draftId - 仅「再编辑」视频存在
-    public var fatherDraftId: String?
-
-    // 发布标题
-    public var title: String?
-    // 发布描述
-    public var videoDes: String?
-    // 发布封面的 URL
-    public var coverUrl: String?
-    // 发布的视频 Id
-    public var videoId: String?
-
-    /**
-      用户创作视频所用的时间成本,单位:毫秒(ms)
-      (仅包含合成前的时间段,不包含合成后选择封面等时间消耗)
-     如果是草稿箱项目,不包含之前累计的时间消耗,仅记录发布这一次的时间消耗
-     如果是再创作项目,不包含别人创作的时间消耗,仅记录发布这一次的时间消耗
-     如果是多次发布的项目,不包含之前累计的时间消耗,仅记录发布这一次的时间消耗
-     */
-    public var editTimeCost: Float64 = 0
-    // 合成视频所用的时间成本,单位:毫秒(ms)
-    public var composeTimeCost: Float64 = 0
-    // 上传视频所用的时间成本,单位:毫秒(ms)
-    public var uploadTimeCost: Float64 = 0
-
-    // 是否为纯上传视频 纯上传视频:true 加工工具视频:false
-    public var isPureUploadVideo: Bool = false
-    // 是否为再创作视频 再创作视频:true 非再创作视频:false
-    public var isReproduction: Bool = false
-    // 是否为再编辑视频 再编辑视频:true 非再编辑视频:false
-    public var isCopyVideo: Bool = false
-    // 段落相关-视频中存在的段落个数:number
-    public var sectionNum: Int = 1
-    // 文字相关 段落中的文字长度信息:number[] [​ section1-text-length, section2-text-length, ... ]
-    public var secTextLength: [Int] = Array<Int>.init()
-    // 图片 / 视频素材相关 段落中的(本地素材)图片数量:number[] [ section1-localImage-num, section2-localImage-num, ... ]
-    public var secLocalImageNum: [Int] = Array<Int>.init()
-    // 图片 / 视频素材相关 段落中的(本地素材)动图数量:number[] [ section1-localGif-num, section2-localGif-num, ... ]
-    public var secLocalGifNum: [Int] = Array<Int>.init()
-    // 图片 / 视频素材相关 段落中的(本地素材)视频数量:number[] [ section1-localVideo-num, section2-localVideo-num, ... ]
-    public var secLocalVideoNum: [Int] = Array<Int>.init()
-    // 图片/视频素材相关 -段落中的(网络素材)图片数量
-    public var secCloudImageNum: [Int] = Array<Int>.init()
-    // 图片/视频素材相关 -段落中(网络素材)动图数量
-    public var secCloudGifNum: [Int] = Array<Int>.init()
-    // 图片/视频素材相关 -段落中(网络素材)视频数量
-    public var secCloudVideoNum: [Int] = Array<Int>.init()
-    // 文字转语音相关 -段落中使用的语音素材名称,若段落中没有使用则报""
-    public var secTextToSpeechMaterial: [String] = Array<String>.init()
-    // 文字转语音相关 -段落中文字转语音的毫秒数
-    public var secTextToSpeechTime: [Int64] = Array<Int64>.init()
-    // 语音转文字相关 -每个段落中使用录音的毫秒数
-    public var secSpeechToTextTime: [Int64] = Array<Int64>.init()
-
-    // 开始上传时间
-    public var startUploadDate: Float64 = 0
-    // 结束上传时间
-    public var endUploadDate: Float64 = 0 {
-        didSet {
-            uploadTimeCost = (endUploadDate - startUploadDate) * 1000
-        }
-    }
-
-    // 使用音乐的名称(未使用音乐默认为 "")
-    public var musicName: String = ""
-    // 使用音乐Id
-    public var musicId: String = ""
-    // 使用音乐的地址(未使用音乐默认为 "")
-    public var musicUrl: String = ""
-    // 音乐的类型(未使用音乐默认为 "") - original - 原唱 - accompaniment - 伴奏
-    public var musicType: String = ""
-    // 音乐是否为片段(未使用音乐默认为 "")- true - 音乐片段 - false - 完整音乐
-    public var isMusicClip: Bool = false
-    // 画布比例
-    public var canvasRatio: String = "original"
-    // 卡点视频 使用视频素材数量
-    public var syncedUpVideoNumber: Int = 0
-    // 卡点视频 使用图片素材数量
-    public var syncedUpImageNumber: Int = 0
-    // 卡点视频 使用音乐Id
-    public var syncedUpMusicId: String = ""
-    // 卡点视频 使用音乐名称
-    public var syncedUpMusicName: String = ""
-    // 卡点视频 合成后视频长度(单位:毫秒)
-    public var syncedUpVideoDuration: Float64 = 0
-    // 卡点视频 原素材总时长(单位:毫秒)视频:报视频时长 图片:一张图报 1000ms
-    public var syncedUpOriginalMaterialDuration: Float64 = 0
-    // 卡点视频 视频选用节奏名称(快节奏 1、适中 2、慢节奏 3))
-    public var syncedUpRhythmNumber: Int = 2
-    
-    // add by ak 视频模式
-    public var syncedUpVideoType:createStickersModel = .createStickersModelPoint
-    //add by ak 设置的速度
-    public var syncedUpVideoSpeedMax:Float = 0.0
-    public var syncedUpVideoSpeedMin:Float = 0.0
-    
-    override public init() {
-        super.init()
-    }
-
-    /// 初始化
-    /// - Parameter projectModel: <#projectModel description#>
-   public init(projectModel: PQEditProjectModel?, reCreateData: PQReCreateModel?) {
-        super.init()
-        if projectModel != nil {
-            draftId = projectModel?.draftboxId
-            projectId = projectModel?.projectId
-            sectionNum = projectModel?.sData?.sections.count ?? 1
-            if projectModel?.sData?.sections != nil, (projectModel?.sData?.sections.count ?? 0) > 0 {
-                for section in (projectModel?.sData?.sections)! {
-                    if section.sectionType == "normal" {
-                        // 段落中的文字长度信息
-                        let voiceType: VOICETYPT? = VOICETYPT(rawValue: section.sectionTimeline?.audioTrack?.audioTrackMaterials.first?.voiceType ?? "")
-                        if voiceType == .SPEECH || voiceType == .LOCAL {
-                            secTextLength.append(section.getInputSubtitle().count)
-                        } else {
-                            secTextLength.append(section.sectionText.count)
-                        }
-                        // 段落中使用的语音素材名称
-                        secTextToSpeechMaterial.append(section.sectionTimeline?.audioTrack?.audioTrackMaterials.first?.produceVoiceConfig?.voice ?? "")
-                        // 段落中文字转语音的毫秒数
-                        var duration: Float64 = 0
-                        if voiceType != nil && section.audioFilePath.count > 0 {
-                            let audioAsset = AVURLAsset(url: URL(fileURLWithPath: documensDirectory + section.audioFilePath), options: avAssertOptions)
-                            duration = Float64(audioAsset.duration.seconds * 1000)
-                        }
-                        if voiceType == .SPEECH || voiceType == .LOCAL {
-                            secSpeechToTextTime.append(Int64(duration))
-                            secTextToSpeechTime.append(0)
-                        } else {
-                            secTextToSpeechTime.append(Int64(duration))
-                            secSpeechToTextTime.append(0)
-                        }
-                        // 本地图片数量
-                        var localImageCount: Int = 0
-                        // 本地gif数量
-                        var localGifCount: Int = 0
-                        // 本地视频数量
-                        var localVideoCount: Int = 0
-                        // 网络图片数量
-                        var netImageCount: Int = 0
-                        // 网络gif数量
-                        var netGifCount: Int = 0
-                        // 网络视频数量
-                        var netVideoCount: Int = 0
-                        if section.sectionTimeline?.visionTrack?.visionTrackMaterials != nil, (section.sectionTimeline?.visionTrack?.visionTrackMaterials.count ?? 0) > 0 {
-                            for visionMaterial in (section.sectionTimeline?.visionTrack?.visionTrackMaterials)! {
-                                switch visionMaterial.type {
-                                case "image":
-                                    if visionMaterial.netResCoverImageURL != nil, (visionMaterial.netResCoverImageURL?.count ?? 0) > 0 {
-                                        netImageCount += 1
-                                    } else {
-                                        localImageCount += 1
-                                    }
-                                case "gif":
-                                    if visionMaterial.netResCoverImageURL != nil, (visionMaterial.netResCoverImageURL?.count ?? 0) > 0 {
-                                        netGifCount += 1
-                                    } else {
-                                        localGifCount += 1
-                                    }
-                                case "video":
-                                    if visionMaterial.netResUrl.count > 0 {
-                                        netVideoCount += 1
-                                    } else {
-                                        localVideoCount += 1
-                                    }
-                                default:
-                                    break
-                                }
-                            }
-                        }
-                        // 本地素材图片数量
-                        secLocalImageNum.append(localImageCount)
-                        // 本地素材动图数量
-                        secLocalGifNum.append(localGifCount)
-                        // 本地素材视频数量
-                        secLocalVideoNum.append(localVideoCount)
-                        // 网络素材图片数量
-                        secCloudImageNum.append(netImageCount)
-                        // 网络素材动图数量
-                        secCloudGifNum.append(netGifCount)
-                        // 网络素材视频数量
-                        secCloudVideoNum.append(netVideoCount)
-                    } else {
-                        sectionNum = sectionNum - 1
-                        if sectionNum <= 0 {
-                            sectionNum = 1
-                        }
-                    }
-                }
-            }
-        }
-        if reCreateData != nil {
-            fatherProjectId = reCreateData?.projectId
-            rootProjectId = reCreateData?.rootProjectId ?? reCreateData?.projectId
-            fatherDraftId = reCreateData?.draftboxId
-        }
-    }
-
-    /// 转换为字典
-    /// - Returns: <#description#>
-    public func toParams() -> [String: Any] {
-        var eventTrackDic = Dictionary<String, Any>.init()
-        // 进入创作工具的入口
-        eventTrackDic["entrance"] = entrance.rawValue
-        // 发布的视频 Id
-        eventTrackDic["videoId"] = videoId ?? ""
-        // 草稿 Id
-        eventTrackDic["draftId"] = draftId ?? ""
-        // 项目 Id
-        eventTrackDic["projectId"] = projectId ?? ""
-        // 再创作视频的父 projectId - 仅「再创作」视频存在
-        eventTrackDic["fatherProjectId"] = fatherProjectId ?? ""
-        // 再创作视频的根 projectId - 仅「再创作」视频存在
-        eventTrackDic["rootProjectId"] = rootProjectId ?? ""
-        // 再编辑视频的父 draftId - 仅「再编辑」视频存在
-        eventTrackDic["fatherDraftId"] = fatherDraftId ?? ""
-        // 发布标题
-        eventTrackDic["title"] = title ?? ""
-        // 发布描述
-        eventTrackDic["description"] = videoDes ?? ""
-        // 发布封面的 URL
-        eventTrackDic["coverUrl"] = coverUrl ?? ""
-        /**
-          用户创作视频所用的时间成本,单位:毫秒(ms)
-          (仅包含合成前的时间段,不包含合成后选择封面等时间消耗)
-         如果是草稿箱项目,不包含之前累计的时间消耗,仅记录发布这一次的时间消耗
-         如果是再创作项目,不包含别人创作的时间消耗,仅记录发布这一次的时间消耗
-         如果是多次发布的项目,不包含之前累计的时间消耗,仅记录发布这一次的时间消耗
-         */
-        eventTrackDic["editTimeCost"] = Int64(editTimeCost)
-        // 合成视频所用的时间成本,单位:毫秒(ms)
-        eventTrackDic["composeTimeCost"] = Int64(composeTimeCost)
-        // 上传视频所用的时间成本,单位:毫秒(ms)
-        eventTrackDic["uploadTimeCost"] = Int64(uploadTimeCost)
-        // 是否为纯上传视频 纯上传视频:true 加工工具视频:false
-        eventTrackDic["isPureUploadVideo"] = isPureUploadVideo
-        // 是否为再创作视频 再创作视频:true 非再创作视频:false
-        eventTrackDic["isReproduction"] = isReproduction
-        // 是否为再编辑视频 再编辑视频:true 非再编辑视频:false
-        eventTrackDic["isCopyVideo"] = isCopyVideo
-        // 段落相关-视频中存在的段落个数:number
-        eventTrackDic["sectionNum"] = entrance == .entrancePublicTabUpload ? 0 : sectionNum
-        // 文字相关 -段落中的文字长度信息
-        eventTrackDic["secTextLength"] = secTextLength
-        // 图片/视频素材相关 -段落中的(本地素材)图片数量
-        eventTrackDic["secLocalImageNum"] = secLocalImageNum
-        // 图片/视频素材相关 -段落中的(本地素材)动图数量
-        eventTrackDic["secLocalGifNum"] = secLocalGifNum
-        // 图片/视频素材相关 -段落中的(本地素材)视频数量
-        eventTrackDic["secLocalVideoNum"] = secLocalVideoNum
-        // 图片/视频素材相关 -段落中的(网络素材)图片数量
-        eventTrackDic["secCloudImageNum"] = secCloudImageNum
-        // 图片/视频素材相关 -段落中(网络素材)动图数量
-        eventTrackDic["secCloudGifNum"] = secCloudGifNum
-        // 图片/视频素材相关 -段落中(网络素材)视频数量
-        eventTrackDic["secCloudVideoNum"] = secCloudVideoNum
-        // 文字转语音相关 -段落中使用的语音素材名称,若段落中没有使用则报""
-        eventTrackDic["secTextToSpeechMaterial"] = secTextToSpeechMaterial
-        // 文字转语音相关 -段落中文字转语音的毫秒数
-        eventTrackDic["secTextToSpeechTime"] = secTextToSpeechTime
-        // 语音转文字相关 -每个段落中使用录音的毫秒数
-        eventTrackDic["secSpeechToTextTime"] = secSpeechToTextTime
-        // 实验数据abInfoData
-        eventTrackDic["abInfoData"] = dictionaryToJsonString(PQSingletoMemoryUtil.shared.abInfoData) ?? ""
-        // 使用音乐的名称(未使用音乐默认为 "")
-        eventTrackDic["musicName"] = musicName
-        // 使用音乐Id
-        eventTrackDic["musicId"] = musicId
-        // 使用音乐的地址(未使用音乐默认为 "")
-        eventTrackDic["musicUrl"] = musicUrl
-        // 音乐的类型(未使用音乐默认为 "") - original - 原唱 - accompaniment - 伴奏
-        eventTrackDic["musicType"] = musicType
-        // 音乐是否为片段(未使用音乐默认为 "")- true - 音乐片段 - false - 完整音乐
-        if musicType.count > 0 {
-            eventTrackDic["isMusicClip"] = isMusicClip
-        } else {
-            eventTrackDic["isMusicClip"] = ""
-        }
-        // 画布比例
-        eventTrackDic["canvasRatio"] = canvasRatio
-        // 卡点视频 使用视频素材数量
-        eventTrackDic["syncedUpVideoNumber"] = syncedUpVideoNumber
-        // 卡点视频 使用图片素材数量
-        eventTrackDic["syncedUpImageNumber"] = syncedUpImageNumber
-        // 卡点视频 使用音乐Id
-        eventTrackDic["syncedUpMusicId"] = syncedUpMusicId
-        // 卡点视频 使用音乐名称
-        eventTrackDic["syncedUpMusicName"] = syncedUpMusicName
-        // 卡点视频 合成后视频长度(单位:毫秒)
-        eventTrackDic["syncedUpVideoDuration"] = syncedUpVideoDuration
-        // 卡点视频 原素材总时长(单位:毫秒)视频:报视频时长 图片:一张图报 1000ms
-        eventTrackDic["syncedUpOriginalMaterialDuration"] = syncedUpOriginalMaterialDuration
-        // 卡点视频 视频选用节奏名称(快节奏 1、适中 2、慢节奏 3))
-        eventTrackDic["syncedUpRhythmNumber"] = syncedUpRhythmNumber
-        
-        //-     1:跳跃卡点,2:快慢速,3:仅配乐
-        if(syncedUpVideoType == .createStickersModelOnlyMusic){
-            eventTrackDic["syncedUpVideoType"] = "3"
-            
-        }else if(syncedUpVideoType == .createStickersModelPoint){
-            eventTrackDic["syncedUpVideoType"] = "1"
-        }else if(syncedUpVideoType == .createStickersModelSpeed){
-            eventTrackDic["syncedUpVideoType"] = "2"
-            eventTrackDic["syncedUpVideoSpeed"] = "[\(syncedUpVideoSpeedMax),\(syncedUpVideoSpeedMin)]"
-        }
-    
-        
-        BFLog(message: "创作工具埋点信息数据-\(eventTrackDic)")
-        return eventTrackDic
-    }
-}

+ 0 - 551
BFStuckPointKit/Classes/EventTrack/ViewModel/PQEventTrackViewModel.swift

@@ -1,551 +0,0 @@
-//
-//  PQEventTrackViewModel.swift
-//  PQSpeed
-//
-//  Created by SanW on 2020/11/3.
-//  Copyright © 2020 BytesFlow. All rights reserved.
-//
-
-import UIKit
-import BFCommonKit
-import BFNetRequestKit
-import BFMediaKit
-
-// MARK: - 埋点数据上报
-
-/// 埋点数据上报
-public class PQEventTrackViewModel: NSObject {
-    /// 基础埋点上报
-    /// - Parameters:
-    ///   - logType: 数据库类型
-    ///   - businessType: businessType
-    ///   - objectType: objectType
-    ///   - eventData: eventData
-    ///   - pageSource: 页面场景
-    ///   - extParams: extParams 扩展字段,为json对象
-    ///   - remindmsg: remindmsg 打印提示信息
-    /// - Returns: <#description#>
-    public class func baseReportUpload(logType: statisticsLogType = .st_log_type_simpleevent, businessType: businessType?, objectType: objectType?, pageSource: PAGESOURCE?, params: [String: Any]? = nil, eventData: [String: Any]? = nil, extParams: [String: Any]? = nil, remindmsg: String? = "基础") {
-        DispatchQueue.global().async {
-            // LogType
-            var tempParams: [String: Any] = params ?? [:]
-            tempParams["LogType"] = logType.rawValue
-            // pageSource
-            if pageSource != nil {
-                tempParams["pageSource"] = pageSource?.rawValue
-            }
-            // eventData
-            var tempEventData: [String: Any] = eventData ?? [:]
-            if objectType != nil {
-                tempEventData["objectType"] = objectType?.rawValue
-            }
-            if businessType != nil {
-                tempEventData["businessType"] = businessType?.rawValue
-            }
-            if tempEventData.keys.count > 0 {
-                tempParams["eventData"] = dictionaryToJsonString(tempEventData)
-            }
-            // extParams
-            if extParams != nil, (extParams?.keys.count ?? 0) > 0 {
-                tempParams["extParams"] = dictionaryToJsonString(extParams!)
-            }
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.commonapi + staticsFrontendReportUrl, parames: tempParams,commonParams: commonParams()) { _, _, _, _ in
-                BFLog(message: "\(remindmsg ?? "基础")埋点数据上报:\(tempParams)")
-            }
-        }
-    }
-
-    /// 视频相关上报
-    /// - Parameters:
-    ///   - reportLogType: 上报库类型
-    ///   - videoData: 视频数据
-    ///   - pageSource: 页面
-    ///   - businessType: <#businessType description#>
-    ///   - objectType: <#objectType description#>
-    ///   - extParams: <#extParams description#>
-    ///   - shareId: <#shareId description#>
-    ///   - videoIds: <#videoIds description#>
-    ///   - playId: <#playId description#>
-    ///   - headVideoId: <#headVideoId description#>
-    public class func videoRelationReportUpload(reportLogType: reportLogType, videoData: BFVideoItemProtocol?, pageSource: PAGESOURCE? = nil, businessType: businessType?, objectType: objectType? = nil, extParams: [String: Any]? = nil, shareId: String? = nil, videoIds: String? = nil, playId: String? = nil, headVideoId: String? = nil) {
-        var tempExtParams: [String: Any] = extParams ?? [:]
-        if videoData?.topicData != nil {
-            if (videoData?.pageSource == .sp_cmunit_joinTopic || pageSource == .sp_cmunit_joinTopic) && "\(tempExtParams["topicId"] ?? "")".count <= 0 {
-                tempExtParams["topicId"] = "\(videoData?.topicData?["id"] ?? "")"
-            } else if (videoData?.pageSource == .sp_cmunit_follow || pageSource == .sp_cmunit_follow) && "\(tempExtParams["followedUid"] ?? "")".count <= 0 {
-                tempExtParams["followedUid"] = "\(videoData?.user?["uid"] ?? "")"
-            }
-        }
-        if videoData is PQVideoListModel {
-            if (videoData as? PQVideoListModel)?.reCreateVideoData != nil {
-                tempExtParams["projectId"] = (videoData as? PQVideoListModel)?.reCreateVideoData?.projectId ?? ""
-                tempExtParams["parentProjectId"] = (videoData as? PQVideoListModel)?.reCreateVideoData?.parentProjectId ?? ""
-                tempExtParams["rootProjectId"] = (videoData as? PQVideoListModel)?.reCreateVideoData?.rootProjectId ?? ""
-                tempExtParams["canProduce"] = (videoData as? PQVideoListModel)?.reCreateVideoData?.canReproduce ?? 0
-                if !tempExtParams.keys.contains("clickedVideoId") {
-                    tempExtParams["videoId"] = "\(videoData?.id ?? 0)"
-                }
-                if (videoData as? PQVideoListModel)?.reCreateVideoData?.parentVideoId != nil {
-                    tempExtParams["parentVideoId"] = (videoData as? PQVideoListModel)?.reCreateVideoData?.parentVideoId ?? ""
-                }
-            }
-        }
-        
-        if objectType == .ot_reproduce_clickButton || objectType == .ot_reproduce_collectionBar || objectType == .ot_reproduce_collectionClicButton || objectType == .ot_reproduce_sameSourceButton {
-            PQEventTrackViewModel.baseReportUpload(businessType: businessType, objectType: objectType, pageSource: pageSource != nil ? pageSource! : (videoData?.pageSource ?? .sp_category), extParams: tempExtParams, remindmsg: "再创作上报")
-        } else {
-            PQEventTrackViewModel.reportVideoPlayUpload(reportLogType: reportLogType, videoId: "\(videoData?.id ?? 0)", headVideoId: headVideoId ?? videoData?.headVideoId, videoIds: (videoIds == nil ? "\(videoData?.id ?? 0)" : videoIds), pageSource: pageSource != nil ? pageSource! : (videoData?.pageSource ?? .sp_category), playId: playId ?? "", recommendId: videoData?.recommendId, recommendLogVO: videoData?.recommendLogVO,flowPool:videoData?.flowPool, abInfoData: videoData?.abInfoData, measureType: videoData?.measureType, measureId: videoData?.measureId, businessType: businessType, shareId: shareId ?? "", extParams: tempExtParams, objectType: objectType)
-        }
-    }
-    
-    /// 播放相关数据上报
-    /// - Parameters:
-    ///   - reportLogType: 日志类型
-    ///   - videoId: 视频Id
-    ///   - headVideoId: 当前的相关推荐视频是属于哪个视频的相关推荐,值为那个头部视频的videoId
-    ///   - videoIds: reportLogType_view时传
-    ///   - pageSource: 页面
-    ///   - playId: 播放ID 对于每一次播放操作,生成唯一playid,标示唯一一次播放操作,视频播放中暂停,再继续播放时,不算一次新的播放,不需要生成新的playid。重播视频算一次新的播放,即需要生成新的playid。
-    ///   - recommendId: 推荐链路ID 列表返回
-    ///   - recommendLogVO: 推荐日志对象 列表返回
-    ///   - abInfoData: AB信息 列表返回
-    ///   - measureType:
-    ///   - measureId:
-    ///   - businessType: 操作类型
-    ///   - targetUid: 视频用户ID
-    /// - Returns: <#description#>
-    public class func reportVideoPlayUpload(reportLogType: reportLogType, videoId: String, headVideoId: String?, videoIds: String?, pageSource: PAGESOURCE, playId: String, recommendId: String?, recommendLogVO: String?,flowPool:String?, abInfoData: String?, measureType: Int?, measureId: Int?, businessType: businessType?, targetUid: Int = 0, shareId: String = "", extParams: [String: Any]? = nil, objectType: objectType? = nil) {
-        DispatchQueue.global().async {
-            var params: [String: Any] = ["videoId": videoId, "pageSource": pageSource.rawValue, "playId": playId, "targetUid": targetUid]
-            if measureType != nil {
-                params["measureType"] = measureType
-            }
-            if measureId != nil {
-                params["measureId"] = measureId
-            }
-            if recommendId != nil, !(recommendId?.isEmpty ?? true) {
-                params["recommendId"] = recommendId
-            }
-            if recommendLogVO != nil, !(recommendLogVO?.isEmpty ?? true) {
-                params["recommendLogVO"] = recommendLogVO
-            }
-            if flowPool != nil, (flowPool?.count ?? 0) > 0 {
-                params["flowPool"] = flowPool
-            }
-            if abInfoData != nil, !(abInfoData?.isEmpty ?? true) {
-                params["abInfoData"] = abInfoData
-            }
-            if pageSource.rawValue.contains("speedApp-category") {
-                params["pageCategoryId"] = 55
-            }
-            // eventData
-            var tempEventData: [String: Any] = Dictionary<String, Any>.init()
-            if objectType != nil {
-                tempEventData["objectType"] = objectType?.rawValue
-            }
-            if businessType != nil {
-                tempEventData["businessType"] = businessType?.rawValue
-            }
-            tempEventData["pageSource"] = pageSource.rawValue
-            // extParams
-            var tempExtParams: [String: Any] = extParams ?? [:]
-            if headVideoId != nil, (headVideoId?.count ?? 0) > 0 {
-                tempExtParams["headVideoId"] = (headVideoId ?? "0")
-            }
-            if videoId.count > 0 {
-                tempExtParams["videoId"] = videoId
-            }
-            var url: String = PQENVUtil.shared.longvideoapi
-            switch reportLogType {
-            case .reportLogType_view:
-                url = url + videoViewReportUrl
-                if videoIds != nil, !videoIds!.isEmpty {
-                    params["videoIds"] = videoIds
-                } else {
-                    params["videoIds"] = videoId
-                }
-                params["viewId"] = getUniqueId(desc: "\(videoId)viewId")
-            case .reportLogType_realPlay:
-                url = url + videoRealPlayReportUrl
-                if businessType != nil {
-                    params["actionTriggerType"] = businessType?.rawValue
-                }
-            case .reportLogType_play:
-                url = url + videoPlayReportUrl
-            case .reportLogType_Action:
-                url = url + videoActionReportUrl
-                if businessType != nil, businessType == .bt_videoShareH5 || businessType == .bt_videoShareFriend {
-                    params["shareId"] = shareId
-                    params["rootLaunchShareId"] = shareId
-                    params["parentShareId"] = shareId
-                    params["shareDepth"] = "0"
-                    params["videoId"] = videoIds
-                }
-                if businessType != nil {
-                    params["businessType"] = businessType?.rawValue
-                }
-            case .reportLogType_Frontend:
-                url = PQENVUtil.shared.commonapi + staticsFrontendReportUrl
-                params["LogType"] = 30
-                params["eventData"] = dictionaryToJsonString(["tabIndex": PQSingletoMemoryUtil.shared.selectedTabIndex ?? "categoryTab", "businessType": businessType?.rawValue ?? ""])
-            }
-            if tempEventData.keys.count > 0 {
-                params["eventData"] = dictionaryToJsonString(tempEventData)
-            }
-            if tempExtParams.keys.count > 0 {
-                params["extParams"] = dictionaryToJsonString(tempExtParams)
-            }
-            BFNetRequestAdaptor.postRequestData(url: url, parames: params,commonParams: commonParams()) { response, _, error, _ in
-                BFLog(message: "播放相关数据上报:\(String(describing: error)),\(response ?? [:])")
-            }
-        }
-    }
-
-    // 分享上报
-    // - Parameters:
-    //   - isShareVideo: 是否是分享视频
-    //   - screenType: 分享场景 1-分享视频/用户 2-分享视频到朋友圈 3-分享视频到好友
-    //   - videoId: 视频Id
-    //   - pageSource: 页面枚举
-    //   - recommendId: <#recommendId description#>
-    //   - recommendLogVO: <#recommendLogVO description#>
-    //   - abInfoData: <#abInfoData description#>
-    //   - measureType: <#measureType description#>
-    //   - measureId: <#measureId description#>
-    //   - businessType: <#businessType description#>
-    //   - targetUid: <#targetUid description#>
-    //   - shareId: <#shareId description#>
-    public class func shareReportUpload(isShareVideo: Bool = true, screenType: Int = 1, videoId: String, pageSource: PAGESOURCE, recommendId: String?, recommendLogVO: String?,flowPool:String?, abInfoData: String?, measureType: Int?, measureId: Int?, businessType: businessType?, targetUid: Int?, shareId: String = "",playId:String?,extParams: [String: Any]? = nil) {
-        DispatchQueue.global().async {
-            var url: String = PQENVUtil.shared.longvideoapi
-            switch screenType {
-            case 1:
-                url = url + userShareReportUrl
-            case 2:
-                url = url + userShareH5ReportUrl
-            case 3:
-                url = url + userShareFriendReportUrl
-            default:
-                break
-            }
-            var params: [String: Any] = ["type": isShareVideo ? "1" : "2", "videoId": videoId, "pageSource": pageSource.rawValue, "playId": playId ?? "", "targetUid": targetUid ?? 0, "shareDepth": "0"]
-            if extParams != nil {
-                params["extParams"] = dictionaryToJsonString(extParams!)
-            }
-            if measureType != nil {
-                params["measureType"] = measureType
-            }
-            if measureId != nil {
-                params["measureId"] = measureId
-            }
-            params["shareId"] = shareId
-            params["rootLaunchShareId"] = shareId
-            params["parentShareId"] = shareId
-            params["rootShareId"] = shareId
-            if !BFLoginUserInfo.shared.openId.isEmpty {
-                params["shareUi"] = BFLoginUserInfo.shared.openId
-            }
-            if pageSource.rawValue.contains("speedApp-category") {
-                params["pageCategoryId"] = 55
-            }
-            if isShareVideo {
-                params["shareObjectId"] = videoId
-            } else {
-                params["shareObjectId"] = targetUid
-            }
-            if businessType != nil {
-                params["businessType"] = businessType?.rawValue
-            }
-            if recommendId != nil, !(recommendId?.isEmpty ?? true) {
-                params["recommendId"] = recommendId
-            }
-            if recommendLogVO != nil, !(recommendLogVO?.isEmpty ?? true) {
-                params["recommendLogVO"] = recommendLogVO
-            }
-            if flowPool != nil, (flowPool?.count ?? 0) > 0 {
-                params["flowPool"] = flowPool
-            }
-            if abInfoData != nil, !(abInfoData?.isEmpty ?? true) {
-                params["abInfoData"] = abInfoData
-            }
-            BFNetRequestAdaptor.postRequestData(url: url, parames: params,commonParams: commonParams()) { response, _, error, _ in
-                BFLog(message: "用户点击分享数据上报:\(String(describing: error)),\(response ?? [:])")
-            }
-        }
-    }
-
-    /// DNS上报
-    /// - Returns: <#description#>
-    public class func dnsReportUpload() {
-        DispatchQueue.global().async {
-            let speedExtParams = parseDNS(hostUrl: "speed.piaoquantv.com")
-            let rescdnExtParams = parseDNS(hostUrl: "rescdn.yishihui.com")
-            if speedExtParams != nil {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_dnsParseCostTime, objectType: nil, pageSource: nil, eventData: ["tabIndex": PQSingletoMemoryUtil.shared.selectedTabIndex ?? "categoryTab"], extParams: speedExtParams, remindmsg: "dnsParse")
-            }
-            if rescdnExtParams != nil {
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_dnsParseCostTime, objectType: nil, pageSource: nil, eventData: ["tabIndex": PQSingletoMemoryUtil.shared.selectedTabIndex ?? "categoryTab"], extParams: rescdnExtParams, remindmsg: "dnsParse")
-            }
-        }
-    }
-
-    /// 冷热启动数据上报
-    /// - Parameters:
-    ///   - isHotLaunch 是否是热启动
-    ///   - logType: <#logType description#>
-    ///   - eventId: <#eventId description#>
-    ///   - eventData: <#eventData description#>
-    ///   - extParams: <#extParams description#>
-    ///   - pageSource: <#pageSource description#>
-    /// - Returns: <#description#>
-     class public func reportStatisticsUpload(isHotLaunch: Bool = false, logType: statisticsLogType, coldLaunchType _: coldLaunchType = .coldLaunchType_userActiveOpen, eventId _: String?, eventData _: String?, pageSource: PAGESOURCE?) {
-        DispatchQueue.global().async {
-            var params: [String: Any] = ["LogType": logType.rawValue]
-            if PQSingletoMemoryUtil.shared.isColdLaunch {
-                // 1-请求中 2-请求成功 3-请求失败
-                if PQSingletoMemoryUtil.shared.coldLaunchStatus != 2 {
-                    PQSingletoMemoryUtil.shared.coldLaunchStatus = 1
-                } else {
-                    return
-                }
-            }
-            params["eventData"] = dictionaryToJsonString(["tabIndex": PQSingletoMemoryUtil.shared.selectedTabIndex ?? "categoryTab"])
-            // 参数
-            var extParams: [String: Any] = Dictionary<String, Any>.init()
-            extParams["downloadChannel"] = channelID
-            extParams["launchParams"] = PQSingletoMemoryUtil.shared.commandLaunchParams
-            if pageSource?.rawValue.contains("speedApp-category") ?? false {
-                params["pageCategoryId"] = 55
-            }
-            if PQSingletoMemoryUtil.shared.commandReportParams != nil {
-                for (key, value) in PQSingletoMemoryUtil.shared.commandReportParams!.reversed() {
-                    extParams[key] = value
-                }
-            }
-            if !isHotLaunch {
-                extParams["coldLaunchType"] = (PQSingletoMemoryUtil.shared.coldLaunchType ?? .coldLaunchType_userActiveOpen).rawValue
-            } else {
-                extParams["hotLaunchType"] = (PQSingletoMemoryUtil.shared.coldLaunchType ?? .coldLaunchType_userActiveOpen).rawValue
-            }
-            if pageSource != nil {
-                params["pageSource"] = pageSource!.rawValue
-            }
-            // 是否第一次安装
-            let firstInstall: String? = getUserDefaults(key: cFirstInstall) as? String
-            if firstInstall == nil || (firstInstall?.count ?? 0 <= 0) || firstInstall != "1" {
-                extParams["isFirstLaunch"] = 1
-            } else {
-                extParams["isFirstLaunch"] = 0
-            }
-            params["extParams"] = dictionaryToJsonString(extParams)
-            // 是否第一次安装
-            let firstParams: String? = getUserDefaults(key: cFirstParams) as? String
-            if (firstInstall == nil || firstInstall?.count ?? 0 <= 0 || firstInstall != "1") && (firstParams != nil && ((firstParams?.count ?? 0) > 0)) {
-                params = jsonStringToDictionary(firstParams!) ?? Dictionary<String, Any>.init()
-            }
-            if firstParams == nil || ((firstParams?.count ?? 0) <= 0) {
-                saveUserDefaults(key: cFirstParams, value: dictionaryToJsonString(params) ?? "")
-            }
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.commonapi + staticsFrontendReportUrl, parames: params,commonParams: commonParams()) { response, _, error, _ in
-                BFLog(message: "冷热启动上报:\(String(describing: error)),\(response ?? [:]),params = \(params)")
-                if PQSingletoMemoryUtil.shared.isColdLaunch {
-                    PQSingletoMemoryUtil.shared.coldLaunchStatus = error == nil ? 2 : 3
-                }
-                // 清空启动数据
-                PQSingletoMemoryUtil.shared.coldLaunchType = nil
-                if error == nil, firstInstall == nil || firstInstall?.count ?? 0 <= 0 || firstInstall != "1" {
-                    saveUserDefaults(key: cFirstInstall, value: "1")
-                }
-                saveUserDefaults(key: cSelectedTabIndex, value: "categoryTab")
-            }
-        }
-    }
-
-    /// 推送点击数据上报
-    /// - Parameters:
-    ///   - pushId: 推送Id
-    ///   - pushTargetType: 1-推送单个视频 2-整体关注有更新 3-关注单个up主有更新(暂废弃) 4-订阅某人有更新
-    ///   - pushBrand: 推送平台 APPLE_TYPE
-    ///   - pushTargetId: pushTargetType == 1 视频ID,pushTargetType == 4 用户ID
-    ///   - bizParam 扩展参数
-    /// - Returns: <#description#>
-    public class func reportPushActionUpload(pushId: String, pushTargetType: Int, pushBrand: String = cPushChannel, pushTargetId: String?,bizParam : [String: Any]? = nil) {
-        DispatchQueue.global().async {
-            var params: [String: Any] = bizParam ?? Dictionary<String,Any>.init()
-            if pushTargetId != nil {
-                params["pushTargetId"] = pushTargetId
-            }
-            if pushId.count > 0 {
-                params["pushId"] = pushId
-            }
-            params["pushTargetType"] = pushTargetType
-            params["pushBrand"] = pushBrand
-            params["pushReportType"] = "click"
-            if params.keys.contains("aps"){
-                params.removeValue(forKey: "aps")
-            }
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.longvideoapi + pushActionReportUrl, parames: params,commonParams: commonParams()) { response, _, error, _ in
-                BFLog(message: "推送点击数据上报:\(String(describing: error)),\(response ?? [:])")
-            }
-        }
-    }
-
-    /// 上报deviceToken
-    /// - Parameter registerId: 设备id
-    /// - Parameter deviceToken: <#deviceToken description#>
-    /// - Returns: <#description#>
-    public class func reportPushDeviceTokenUpload(registerId: String, deviceToken: String, completeHander: @escaping (_ isSuccess: Bool) -> Void) {
-        DispatchQueue.global().async {
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.longvideoapi + pushDeviceTokenReportUrl, parames: ["registerId": registerId, "deviceToken": deviceToken, "brand": cPushChannel],commonParams: commonParams()) { response, _, error, _ in
-                completeHander(error == nil ? true : false)
-                BFLog(message: "deviceToken数据上报:\(String(describing: error)),\(response ?? [:])")
-            }
-        }
-    }
-
-    /// 搜索上报
-    /// - Parameters:
-    ///   - keyWord: 搜索词
-    ///   - searchType: 1 热搜词搜索 2 历史记录 3 普通搜索
-    ///   - searchNumber: 数量
-    ///   - reportType: 1 into 2 click 3 show
-    /// - Returns: <#description#>
-    public class func searchReportUpload(keyWord: String, searchType: Int, searchNumber: Int = 10, reportType: Int = 2) {
-        DispatchQueue.global().async {
-            let params: [String: Any] = ["keyWord": keyWord, "searchType": searchType, "searchNumber": searchNumber, "reportType": reportType]
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.longvideoapi + searchReportUrl, parames: params,commonParams: commonParams()) { response, _, error, _ in
-                BFLog(message: "搜索数据上报:\(String(describing: error)),\(response ?? [:])")
-            }
-        }
-    }
-
-    /// 发布视频的上报
-    /// - Parameters:
-    ///   - projectId:项目ID-发布创作的视频时必传,会在进入创作工具页时生成,以app_no_projectdata为前缀
-    ///   - businessType: <#businessType description#>
-    ///   - ossInfo: <#ossInfo description#>
-    ///   - params: <#params description#>
-    /// - Returns: <#description#>
-    public class func publishReportUpload(projectId: String?, businessType: businessType, ossInfo: [String: Any], params: [String: Any]) {
-        DispatchQueue.global().async {
-            var extParams: [String: Any] = ["ossInfo": dictionaryToJsonString(ossInfo) ?? "", "params": dictionaryToJsonString(params) ?? ""]
-            if projectId != nil {
-                extParams["projectId"] = projectId
-            }
-            if !extParams.keys.contains("source") {
-                extParams["source"] = projectId != nil ? "videoCompose" : "videoUpload"
-            }
-            PQEventTrackViewModel.baseReportUpload(businessType: businessType, objectType: nil, pageSource: nil, extParams: extParams, remindmsg: "发布视频")
-        }
-    }
-
-    /// 处理视频创作素材搜索上报
-    /// - Parameters:
-    ///   - businessType: <#businessType description#>
-    ///   - materialList: <#materialList description#>
-    /// - Returns: <#description#>
-    public class func dealWithMaterialSearchReportUpload(businessType: businessType, materialList: [PQEditVisionTrackMaterialsModel]) {
-        if materialList.count > 0 {
-            DispatchQueue.global().async {
-                for item in materialList {
-                    materialReportUpload(material: item, businessType: businessType)
-                }
-            }
-        }
-    }
-
-    /// 视频创作素材搜索上报
-    /// - Parameters:
-    ///   - material:搜索素材
-    ///   - searchId:搜索ID
-    ///   - businessType: <#businessType description#>
-    ///   - pageSource: <#pageSource description#>
-    /// - Returns: <#description#>
-    public class func materialReportUpload(material: PQEditVisionTrackMaterialsModel?, businessType: businessType?, objectType: objectType? = nil) {
-        DispatchQueue.global().async {
-            var params: [String: Any] = [:]
-            var eventData: [String: Any] = [:]
-            var tempObjectType: objectType? = objectType
-            if tempObjectType == nil, material != nil {
-                if material?.type == StickerType.GIF.rawValue {
-                    tempObjectType = .ot_makevideo_gif
-                } else if material?.type == StickerType.VIDEO.rawValue {
-                    tempObjectType = .ot_makevideo_video
-                } else if material?.type == StickerType.IMAGE.rawValue {
-                    tempObjectType = .ot_makevideo_jpg
-                }
-            }
-            if material?.searchId != nil {
-                params["searchId"] = material?.searchId
-                eventData["searchId"] = material?.searchId
-            }
-            if material?.localSearchId != nil {
-                params["localSearchId"] = material?.localSearchId
-                eventData["localSearchId"] = material?.localSearchId
-            }
-            if material?.sliceId != nil {
-                params["sliceId"] = material?.sliceId
-                params["videoId"] = material?.sliceId
-            }
-            if material?.sourceType != nil {
-                params["sourceType"] = material?.sourceType
-            }
-            PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_videoCompose, businessType: businessType, objectType: tempObjectType, pageSource: .sp_material_search, params: params, eventData: eventData, remindmsg: "视频创作素材搜索")
-        }
-    }
-
-    /// 站内消息埋点上报
-    /// - Parameters:
-    ///   - messageIds: 消息Id,多个用逗号分隔
-    ///   - clickId: 子入口点击ID,标识一次子入口点击动作。子入口内消息列表中的消息点击行为都带有此字段,分享空间消息除外
-    ///   - messageType: 消息类型
-    ///   - messageSubType: 消息子类型
-    ///   - actionType: 动作类型(backendCreate:后端构建;backendReturn:后端返回;frontendPull:前端拉取;view:曝光;click:点击)
-    ///   - objectType: <#objectType description#>
-    ///   - pageSource: <#pageSource description#>
-    ///   - readStatus: 已读状态:1:页面上显示未读 2:页面上显示已读
-    ///   - eventData: 扩展数据,json格式,日志系统里会展开存储
-    ///   - extParams: 扩展字段 json格式
-    ///   - remindmsg: 打印提示信息
-    /// - Returns: <#description#>
-    public class func messageReportUpload(messageIds: String?, clickId: String?, messageType: messageType?, messageSubType: messageSubType?, actionType: actionType?, objectType: objectType?, pageSource: PAGESOURCE?, readStatus: Int = 1, eventData: [String: Any]? = nil, extParams: [String: Any]? = nil, remindmsg: String? = "基础") {
-        DispatchQueue.global().async {
-            var tempParams: [String: Any] = extParams ?? [:]
-            if messageType != nil, messageType != .mt_nomal {
-                tempParams["messageType"] = messageType?.rawValue
-            }
-            if messageSubType != nil, messageSubType != .mtsub_nomal {
-                tempParams["messageSubType"] = messageSubType?.rawValue
-            }
-            if actionType != nil {
-                tempParams["actionType"] = actionType?.rawValue
-            }
-            if messageIds != nil {
-                tempParams["messageIds"] = messageIds
-            }
-            tempParams["readStatus"] = readStatus + 1
-            if pageSource != nil {
-                tempParams["pageSource"] = pageSource?.rawValue
-            }
-            // eventData
-            var tempEventData: [String: Any] = eventData ?? [:]
-            if objectType != nil {
-                tempEventData["objectType"] = objectType?.rawValue
-            }
-            if tempEventData.keys.count > 0 {
-                tempParams["eventData"] = dictionaryToJsonString(tempEventData)
-            }
-            // extParams
-            var tempExtParams: [String: Any] = extParams ?? [:]
-            if clickId != nil {
-                tempExtParams["clickId"] = clickId
-            }
-            if tempExtParams.keys.count > 0 {
-                tempParams["extParams"] = dictionaryToJsonString(tempExtParams)
-            }
-            BFNetRequestAdaptor.postRequestData(url: PQENVUtil.shared.longvideoapi + messagePeportUrl, parames: tempParams,commonParams: commonParams()) { _, _, _, _ in
-                BFLog(message: "\(remindmsg ?? "基础")埋点数据上报:\(tempParams)")
-            }
-        }
-    }
-}

+ 0 - 82
BFStuckPointKit/Classes/Model/PQReCreateModel.swift

@@ -1,82 +0,0 @@
-//
-//  PQReCreateModel.swift
-//  PQSpeed
-//
-//  Created by SanW on 2020/12/28.
-//  Copyright © 2020 BytesFlow. All rights reserved.
-//
-
-import RealmSwift
-import UIKit
-import BFCommonKit
-
-public class PQReCreateModel: Object {
-    @objc dynamic public var canReproduce: Int = 0 // 是否可以被再创作,1:是,0:否
-    @objc dynamic public var draftboxId: String? // 草稿ID
-    @objc dynamic public var parentProjectId: String? // 父项目ID
-    @objc dynamic public var rootProjectId: String? // 根项目ID
-    @objc dynamic public var projectId: String? // 项目ID
-    @objc dynamic public var projectLinkUrl: String? // 项目链接
-    @objc dynamic public var reProduceCount: Int = 0 // 被再创作次数
-    @objc dynamic public var reProduceVideoFlag: Int = 0 //  再创作视频标记,1:是,0:否
-    @objc dynamic public var videoId: String? // 视频id
-    @objc dynamic public var parentVideoId: String? // 父视频id
-    @objc dynamic public var rootVideoId: String? // 根视频id
-    @objc dynamic public var rhythmMusicFlag: Int = 0 // 是否有卡点音乐标记 1:是,0:否
-    @objc dynamic public var rhythmMusicName: String? // 卡点音乐歌名
-    var rhythmMusicNameWidth: CGFloat = 0 // 卡点音乐显示宽度
-    
-    // add by ak 卡点模式(1:跳跃卡点,2:快慢速,3:仅配乐)
-    @objc dynamic public var rhythmMode:Int = 0
-    override required init() {
-        super.init()
-    }
-
-   public init(jsonDict: [String: Any]) {
-        super.init()
-        if jsonDict.keys.contains("canReproduce") {
-            canReproduce = Int("\(jsonDict["canReproduce"] ?? "0")") ?? 0
-        }
-        if jsonDict.keys.contains("draftboxId"), "\(jsonDict["draftboxId"] ?? "")" != "<null>" {
-            draftboxId = "\(jsonDict["draftboxId"] ?? "")"
-        }
-        if jsonDict.keys.contains("parentProjectId"), "\(jsonDict["parentProjectId"] ?? "")" != "<null>" {
-            parentProjectId = "\(jsonDict["parentProjectId"] ?? "")"
-        }
-        if jsonDict.keys.contains("rootProjectId"), "\(jsonDict["rootProjectId"] ?? "")" != "<null>" {
-            rootProjectId = "\(jsonDict["rootProjectId"] ?? "")"
-        }
-        if jsonDict.keys.contains("projectId"), "\(jsonDict["projectId"] ?? "")" != "<null>" {
-            projectId = "\(jsonDict["projectId"] ?? "")"
-        }
-        if jsonDict.keys.contains("projectLinkUrl") {
-            projectLinkUrl = "\(jsonDict["projectLinkUrl"] ?? "")"
-        }
-        if jsonDict.keys.contains("reProduceCount") {
-            reProduceCount = Int("\(jsonDict["reProduceCount"] ?? "0")") ?? 0
-        }
-        if jsonDict.keys.contains("reProduceVideoFlag") {
-            reProduceVideoFlag = Int("\(jsonDict["reProduceVideoFlag"] ?? "0")") ?? 0
-        }
-        
-        if jsonDict.keys.contains("rhythmMode"){
-            rhythmMode = Int("\(jsonDict["rhythmMode"] ?? "0")") ?? 0
-        }
-        if jsonDict.keys.contains("parentVideoId"), "\(jsonDict["parentVideoId"] ?? "")" != "<null>" {
-            parentVideoId = "\(jsonDict["parentVideoId"] ?? "")"
-        }
-        if jsonDict.keys.contains("rhythmMusicFlag") {
-            rhythmMusicFlag = Int("\(jsonDict["rhythmMusicFlag"] ?? "0")") ?? 0
-        }
-        if jsonDict.keys.contains("rhythmMusicName"), "\(jsonDict["rhythmMusicName"] ?? "")" != "<null>" {
-            rhythmMusicName = "\(jsonDict["rhythmMusicName"] ?? "")"
-            if rhythmMusicFlag == 1 {
-                rhythmMusicNameWidth = sizeWithText(text: rhythmMusicName ?? "", font: UIFont.systemFont(ofSize: 13), size: CGSize(width: cScreenWidth - cDefaultMargin * 10 - 32 - 40, height: cDefaultMargin * 3)).width
-                if rhythmMusicNameWidth < cDefaultMargin * 4 {
-                    rhythmMusicNameWidth = cDefaultMargin * 4
-                }
-                rhythmMusicNameWidth = rhythmMusicNameWidth + 32 + 40
-            }
-        }
-    }
-}

+ 0 - 33
BFStuckPointKit/Classes/Model/PQUploadModel.swift

@@ -1,33 +0,0 @@
-
-//
-//  PQUploadModel.swift
-//  PQSpeed
-//
-//  Created by SanW on 2020/8/1.
-//  Copyright © 2020 BytesFlow. All rights reserved.
-//
-
-import Photos
-import UIKit
-import BFCommonKit
-import BFUIKit
-
-open class PQUploadModel: BFBaseModel {
-   public var image: UIImage? // 图片
-   public var localPath: String? // 地址
-   public var duration: TimeInterval = 0 // 时间
-   public var asset: PHAsset? // 视频资源
-   public var videoBucketKey: String? // 上传视频功能
-   public var imageBucketKey: String? // 上传图片地址
-   public var assetCollection: PHAssetCollection? // 相簿
-   public var categoryList: PHFetchResult<PHAsset> = PHFetchResult<PHAsset>.init() // 子相册集合
-   public var assetList: [PHAsset] = Array<PHAsset>.init() // 子相册集合
-   public var uploadID: String? // 上传ID
-   public var videoWidth: CGFloat = 0 // 视频宽
-   public var videoHeight: CGFloat = 0 // 视频高
-   public var contentMode: UIView.ContentMode = .scaleAspectFill
-   public var stsToken: [String: Any]? // 上传信息
-
-    // add by ak 上传来源类型
-   public var videoFromScene: videoFromScene = .UploadNormal
-}

+ 2 - 114
BFStuckPointKit/Classes/Model/PQVideoListModel.swift

@@ -9,121 +9,9 @@
 import BFCommonKit
 import UIKit
 import BFUIKit
+import BFAnalyzeKit
 
-public protocol BFVideoItemProtocol {
-    dynamic var uniqueId: String? { get set } // 唯一ID
-    dynamic var videoId: Int { get set } // 视频ID
-    dynamic var id: UInt64 { get set } // 视频ID
-    dynamic var eventId: String? { get set } // 事件ID
-    dynamic var title: String? { get set } // 标题
-    dynamic var attributedTitle: NSMutableAttributedString? { get set } // 富文本标题
-    dynamic var summary: String? { get set } // 描述
-    dynamic var imageUrl: String { get set } // 图片地址
-    dynamic var selectedImage: String { get set } // 图片地址
-    dynamic var isSelected: Bool { get set }
-    dynamic var recommendLogVO: String? { get set } // 推荐日志对象
-    dynamic var flowPool: String? { get set } // 流量池数据 eg:#1#12#5#169182931029
-    dynamic var abInfoData: String? { get set } // AB
-    dynamic var pageCategoryId: Int { get set } // 页面分类ID
-    dynamic var version: String { get set } // 版本号
-    dynamic var mid: String { get set } // 设备ID
-    dynamic var date: Int { get set } // 当前时间戳  Float64(Date.init().timeIntervalSince1970) * 1000
-    var headVideoId: String? { get set } // 当前的相关推荐视频是属于哪个视频的相关推荐,值为那个头部视频的videoId
-    var auditStatus: Int { get set } // 审核状态 1 审核中,2 不通过 3 待修改,4 自己可见 5 通过 ,
-    var barrageCount: Int { get set } // 弹幕数量
-    var barrageSwitch: Int { get set } // 是否打开弹幕 1打开 -1关闭 ,
-    var auditReason: String? { get set } // 审核不通过或者待修改的原因
-    var barrage: Any? { get set } // 弹幕集合
-    var chargeDetail: [String: Any]? { get set } // 收费的相关信息
-    var commentCount: Int { get set } // 评论数量
-    var coverImg: [String: Any]? { get set } // 封面对象 ,
-    var cutVoStr: String? { get set } // h5剪切板内容 ,
-    var descr: String? { get set } // 视频简介 ,
-    var encryption: Int { get set } // 是否加密视频:0是1不是 ,
-    var favorited: Bool { get set } // 是否收藏 ,
-    var favoriteds: Int { get set } //  收藏数 ,
-    var fileExtensions: String? { get set } // 视频后缀 ,
-    var firstPicture: Bool { get set } // 封面是否是第一帧,false不是true是 ,
-    var gmtCreate: String? { get set } // 创建时间 ,
-    var gmtCreateDescr: String? { get set } // 发视频时间描述 ,
-    var gmtCreateTimestamp: Int { get set } // 创建时间戳 ,
-    var gmtModifie: String? { get set } // 修改时间 ,
-    var gmtModifiedTimestamp: Int { get set } // 修改时间戳 ,
-    var h5ShareImgPath: String? { get set } // h5分享图URL ,
-    var hasShareSpaceData: Bool { get set } // 是否有分享空间数据,
-    var isRecommendShare: Int { get set } // 是否有分发推荐的封面和标题 1 有 0 无 传空或者不传默认为0,
-    var lastTimestamp: Int { get set } // 时间戳 ,
-    //  liteVideoData (LiteVideoDataVO, optional): lite数据,
-    var measure: Int { get set }
-    var measureId: Int { get set }
-    var measureType: Int { get set } // 0 非流量池 1曝光池2普通推荐测试池3待推荐测试池 ,
-    var playBeforeDay: Int { get set } // 播放时间距离今天的天数 ,
-    var playCount: Int { get set } // 播放次数 ,
-    var playCountFormatStr: String? { get set } //  用户视频总播放数,格式化后的值,前端直接显示 ,
-    var playCountTotal: Int { get set } // 总播放次数 ,
-    var playTime: Int { get set } // 播放时间 ,
-    var processShareHeadLab: [String: Any]? { get set } // 视频分享片尾数据 ,
-    var processShareTailLab: [String: Any]? { get set } // 视频分享片尾数据 ,
-    var pwd: String? { get set } // 视频密码 ,
-    var recommendId: String? { get set } // 推荐链路ID ,
-    var recommendSource: Int { get set } // 0 默认 1 第四范式
-    var recommendStatus: Int { get set } // 推荐状态 ,
-    var rotate: Int { get set } // 旋转角度 ,
-    var sampleJobId: String? { get set }
-    var sampleRequestId: String? { get set }
-    var sampleTotalTime: Int { get set }
-    var sampleTranscodeStatus: Int { get set }
-    var sampleTransedVideoPath: String? { get set }
-    var sendBeforeDay: Int { get set } // 发视频距离今天的天数 ,
-    var sensitiveMsg: String? { get set } // 敏感提示信息 ,
-    var sensitiveStatus: Int { get set } //  内容敏感状态(0:未检验,1:不敏感,2:敏感,3:敏感已审) ,
-    var shareCount: Int { get set } // 分享到朋友圈次数 ,
-    var shareId: String? { get set } // 分享的 ID
-    var shareCountFriend: Int { get set } // 分享到微信好友 ,
-    var shareImgPath: String? { get set } // 分享图URL ,
-    var shareLinkType: Int { get set } // 分享到微信好友的图片的链接的类型 ,
-    var sharePageType: Int { get set } // 0 综合模块 1 feed流 ,
-    var shareTitle: String? { get set } // 分享到微信好友的图片的title ,
-    var showHotRecommend: Bool { get set } // 是否需要显示热门推荐 ,
-    var size: Int { get set } //  大小 ,
-    var status: Int { get set } // 数据状态,1 有效,2 已删除,3 已屏蔽,4 关注可见,5 分享可见 6 自己可见 ,
-    var tabShareImgPath: String? { get set } // 转发分享图URL ,
-    var thumbnailImagePath: String? { get set } // 缩略图URL ,
-    var totalTime: Int { get set } // 视频时长 ,
-    var totalTimeParas: String? { get set } // 视频时长十分秒 ,
-    var transcodeStatus: Int { get set } // 转码状态:1-不需转码 2-转码中 3-转码完成 4-转码失败 ,
-    var transcodeVOList: [Any]? { get set } // 多码率数据 ,
-    var uid: Int { get set } // 视频的用户ID ,
-    var user: [String: Any]? { get set } //  用户对象 ,
-    var videoCollectionId: Int { get set } // 视频所在的视频集ID ,
-    var videoCoverSnapshotPath: String? { get set } // 原始封面图片 ,
-    var videoPath: String? { get set } // 视频地址 ,
-    var videoReportMeta: String? { get set } // 视频上报数据,上报时原样返回 ,
-    var videoShareJumpModel: [String: Any]? { get set } // 分享页跳转的信息 ,
-    var playProgress: Float64 { get set } // 已播放时长
-    var duration: Float64 { get set } // 视频总时长
-    var tab_pageType: TAB_PAGETYPE { get set } // 0-推荐 1-关注
-    var pageSource: PAGESOURCE { get set }
-    var isVerticality: Bool { get set }
-    var isShareList: Bool { get set } // 是否是分享列表
-    var uplpadBucketKey: String? { get set } // 上传视频地址
-    var uplpadStatus: Int { get set } // 上传视频状态  1-上传中 2-上传完成 3-上传失败 4-发布中 4-发布完成
-    var uplpadRequest: OSSMultipartUploadRequest? { get set }
-    var stsToken: [String: Any]? { get set } // 上传信息
-    var localPath: String? { get set } // 地址
-    var progress: Float { get set }
-    var projectId: String? { get set } // 项目ID-发布创作的视频时必传,会在进入创作工具页时生成,以app_no_projectdata为前缀
-    var autoType: autoType? { get set } // autoType 自动动作的类型
-    // 发布视频来源类型
-    var videoFromScene: videoFromScene { get set }
-    // extParams: 额外参数-传入发布页 - 主要中秋红包塞活动使用
-    var extParams:String { get set }
-    // 话题信息
-    var topicData: [String: Any]? { get set }
-    var uplpadImage: UIImage? { get set } // 上传的图片封面
-}
-
-open class PQVideoListModel: BFBaseModel, BFVideoItemProtocol {
+public class PQVideoListModel: BFBaseModel, BFVideoItemProtocol {
     @objc public required init() {
         super.init()
     }

+ 5 - 4
BFStuckPointKit/Classes/SelectImage/PQUploadController.swift

@@ -10,6 +10,8 @@ import MobileCoreServices
 import Photos
 import UIKit
 import BFCommonKit
+import BFUIKit
+import BFAnalyzeKit
 
 let playerHeaderH: CGFloat = cScreenWidth * (250 / 375)
 
@@ -484,7 +486,7 @@ open class PQUploadController: BFBaseViewController {
         }
         if !isAssetImage {
             // 视频上传相关上报
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_pageView, objectType: .ot_pageView, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId": ""], remindmsg: "上传相关")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_pageView, objectType: .ot_pageView, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId": ""],commonParams: commonParams())
         }
     }
 
@@ -513,8 +515,7 @@ open class PQUploadController: BFBaseViewController {
             navigationController?.popViewController(animated: true)
             if !isAssetImage {
                 // 视频上传相关上报
-                // MARK: SanW--待修改-2021.11.08
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_up_backBtn, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId":""], remindmsg: "上传相关")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_up_backBtn, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId":""],commonParams: commonParams())
             }
         case 2: // 筛选
             showCollects()
@@ -531,7 +532,7 @@ open class PQUploadController: BFBaseViewController {
                     jumptoPublicHandle!(selectedData)
                 }
                 // 视频上传相关上报
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_up_nextBtn, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId": ""], remindmsg: "上传相关")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_up_nextBtn, pageSource: .sp_upload_videoSelect, extParams: ["source": videoUploadSourceType.videoUpload.rawValue, "projectId": "", "draftboxId": ""],commonParams: commonParams())
                 return
             }
             imageManager.requestImage(for: (selectedData?.asset)!, targetSize: itemSize, contentMode: .aspectFill, options: nil) { [weak self] image, _ in

+ 1 - 0
BFStuckPointKit/Classes/View/PQCustomSpeedSettingView.swift

@@ -7,6 +7,7 @@
 
 import Foundation
 import BFCommonKit
+import BFUIKit
 
 class PQCustomSpeedSettingView: UIView {
     // 左上角返回

+ 1 - 0
BFStuckPointKit/Classes/View/PQEditPublicCoverImageView.swift

@@ -7,6 +7,7 @@
 
 import Foundation
 import BFCommonKit
+import BFUIKit
 
 class PQEditPublicCoverImageView: UIView {
     

+ 4 - 15
BFStuckPointKit/Classes/View/PQSelecteMusicView.swift

@@ -9,6 +9,7 @@ import Foundation
 import BFUIKit
 import BFCommonKit
 import BFMediaKit
+import BFAnalyzeKit
 
 class PQSelecteMusicView: UIView {
     // 所有分类数据
@@ -379,8 +380,7 @@ extension PQSelecteMusicView: UICollectionViewDelegate, UICollectionViewDataSour
                 self?.pausePlayer()
                 self?.currentPlayingInVideoData?.voiceStatue = .isNormal
                 self?.currentPlayingInVideoData = bgmData as? PQVoiceModel
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSelect, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(bgmData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(bgmData as? PQVoiceModel)?.musicId ?? ""], remindmsg: "")
-                
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicSelect, pageSource: .sp_shanyinApp_main, extParams: ["musicName":(bgmData as? PQVoiceModel)?.musicName ?? "" ,"musicId":(bgmData as? PQVoiceModel)?.musicId ?? ""],commonParams: commonParams())
                 if self?.btnClickHandle != nil {
                     self?.btnClickHandle!(sender, bgmData)
                     
@@ -436,22 +436,12 @@ extension PQSelecteMusicView: UICollectionViewDelegate, UICollectionViewDataSour
             }
             let music = musicDatas[indexPath.item]
             music.voiceStatue = .isSelected
-//            if music.musicId != currentPlayingInVideoData?.musicId{
             playStuckPointMusic(itemData:music)
-//            }else{
-//                avPlayer.pause()
-//            }
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicCategorySelect, pageSource: .sp_shanyinApp_main, extParams: ["categoryName":currentSelectTag?.tagName ?? "","categoryId":currentSelectTag?.tagId ?? ""], remindmsg: "")
-
-//            if music.musicId != currentPlayingInVideoData?.musicId{
-//                BFLog(1, message: "预览:\(music.musicName) 当前:\(currentPlayingInVideoData?.musicName)")
-//            }
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicCategorySelect, pageSource: .sp_shanyinApp_main, extParams: ["categoryName":currentSelectTag?.tagName ?? "","categoryId":currentSelectTag?.tagId ?? ""],commonParams: commonParams())
             if didSelectItemHandle != nil {
                 didSelectItemHandle!(music.voiceStatue)
             }
             selectMusicCollection.reloadData()
-
-         
         }else{
             //停止分类列表的滑动。防止切换分类时 crash
             selectMusicCollection.setContentOffset(selectMusicCollection.contentOffset , animated: false)
@@ -476,8 +466,7 @@ extension PQSelecteMusicView: UICollectionViewDelegate, UICollectionViewDataSour
         
         if (collectionView == selectMusicCollection && musicDatas.count > indexPath.item ){
             let music = musicDatas[indexPath.item]
-            
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_shanyinApp_musicVideoPreview_musicView, pageSource: .sp_shanyinApp_main, extParams: ["musicName":music.musicName ?? "" ,"musicId":music.musicId ?? ""], remindmsg: "")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonView, objectType: .ot_shanyinApp_musicVideoPreview_musicView, pageSource: .sp_shanyinApp_main, extParams: ["musicName":music.musicName ?? "" ,"musicId":music.musicId ?? ""],commonParams: commonParams())
         }
     }
 }

+ 1 - 0
BFStuckPointKit/Classes/View/PQSelectedMaterialListView.swift

@@ -9,6 +9,7 @@
 import UIKit
 import BFMaterialKit
 import BFMediaKit
+import BFUIKit
 
 class PQSelectedMaterialListView: UIView {
     var photoData: [PQEditVisionTrackMaterialsModel] = Array<PQEditVisionTrackMaterialsModel>.init() // 相册数据

+ 7 - 6
BFStuckPointKit/Classes/View/PQSpeedSettingView.swift

@@ -7,6 +7,7 @@
 
 import Foundation
 import BFCommonKit
+import BFAnalyzeKit
 
 class PQSpeedSettingView: UIView {
     // 速度列表
@@ -226,23 +227,23 @@ extension PQSpeedSettingView: UICollectionViewDelegate, UICollectionViewDataSour
         if(viewType == 1){
             
             if(datas[indexPath.row].title == "自定义" || datas[indexPath.row].title == "自定义\n快慢速"){
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeSpeed, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeSpeed, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }else{
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectSpeed, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectSpeed, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }
         }else if(viewType == 2){
            
             if(datas[indexPath.row].title == "自定义" || datas[indexPath.row].title == "自定义\n快慢速"){
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeRatio, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeRatio, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }else{
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectRatio, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectRatio, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }
      
         }else if(viewType == 3){
             if(datas[indexPath.row].title == "自定义" || datas[indexPath.row].title == "自定义\n快慢速"){
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeRepeatTimes, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_customizeRepeatTimes, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }else{
-                PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectRepeatTimes, pageSource: .sp_stuck_previewSyncedUp, extParams:nil, remindmsg: "")
+                BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_selectRepeatTimes, pageSource: .sp_stuck_previewSyncedUp,commonParams: commonParams())
             }
         }
  

+ 3 - 4
BFStuckPointKit/Classes/View/PQStuckPointCuttingView.swift

@@ -8,6 +8,8 @@
 
 import UIKit
 import BFCommonKit
+import BFAnalyzeKit
+import BFUIKit
 
 class PQStuckPointCuttingView: UIView {
     // 视频时长
@@ -409,10 +411,7 @@ class PQStuckPointCuttingView: UIView {
             videoDidEndDragging!(1,startTime,startTime + CGFloat(stuckPointEndTime - stuckPointStartTime),0)
         }
         resetDefaultsColor(clearData: false)
-        PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: objectType.ot_shanyinApp_musicVideoPreview_musicPeriodSelect, pageSource: PAGESOURCE.sp_shanyinApp_main, extParams: nil, remindmsg: "")
-
-
-
+        BFEventTrackAdaptor.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_shanyinApp_musicVideoPreview_musicPeriodSelect, pageSource: .sp_shanyinApp_main,commonParams: commonParams())
     }
 }
 

+ 1 - 0
BFStuckPointKit/Classes/View/PQStuckPointMaterialHeadView.swift

@@ -9,6 +9,7 @@
 import SnapKit
 import UIKit
 import BFCommonKit
+import BFUIKit
 
 class PQStuckPointMaterialHeadView: UIView {
     lazy var iconImageView: UIImageView = {

+ 1 - 0
BFStuckPointKit/Classes/View/PQStuckPointMusicContentCell.swift

@@ -9,6 +9,7 @@
 import UIKit
 import BFCommonKit
 import BFMediaKit
+import BFUIKit
 
 class PQStuckPointMusicContentCell: UICollectionViewCell {
     // 按钮点击的回调

+ 2 - 0
BFStuckPointKit/Classes/ViewModel/PQStuckPointViewModel.swift

@@ -10,6 +10,8 @@ import UIKit
 import BFCommonKit
 import BFNetRequestKit
 import BFMediaKit
+import BFAnalyzeKit
+import BFUIKit
 
 public class PQStuckPointViewModel: NSObject {
     /// 获取卡点音乐分类列表

+ 3 - 2
BFStuckPointKit/Classes/ViewModel/PQUploadViewModel.swift

@@ -10,6 +10,7 @@ import BFCommonKit
 import BFNetRequestKit
 import UIKit
 import BFUIKit
+import BFAnalyzeKit
 
 public class PQUploadViewModel: NSObject {
     /// 发布视频
@@ -56,7 +57,7 @@ public class PQUploadViewModel: NSObject {
                 extParams["parentProjectId"] = reCreateData?.parentProjectId ?? ""
                 extParams["rootProjectId"] = reCreateData?.rootProjectId ?? ""
             }
-            PQEventTrackViewModel.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_publishSuccess, pageSource: nil, extParams: extParams, remindmsg: "上传相关")
+            BFEventTrackAdaptor.baseReportUpload(businessType: .bt_up_process, objectType: .ot_up_publishSuccess, pageSource: nil, extParams: extParams,commonParams: commonParams())
             if projectId != nil {
                 PQBaseViewModel.reportSendVideo(projectId!, tempModel.uniqueId ?? "", videoFromScene: videoFromScene) { isSuccess, _ in
                     if !isSuccess {
@@ -75,7 +76,7 @@ public class PQUploadViewModel: NSObject {
                 eventTrackData?.videoDes = descr
                 eventTrackData?.videoId = tempModel.uniqueId
                 eventTrackData?.coverUrl = coverImgPath
-                PQEventTrackViewModel.baseReportUpload(logType: .st_log_type_videoProduction, businessType: nil, objectType: nil, pageSource: nil, eventData: eventTrackData?.toParams(), remindmsg: "创作工具埋点上报")
+                BFEventTrackAdaptor.baseReportUpload(logType: .st_log_type_videoProduction, businessType: nil, objectType: nil, pageSource: nil, eventData: eventTrackData?.toParams(),commonParams: commonParams())
             }
         }
     }

+ 2 - 0
Example/BFStuckPointKit.xcodeproj/project.pbxproj

@@ -275,6 +275,7 @@
 				"${PODS_ROOT}/Target Support Files/Pods-BFStuckPointKit_Example/Pods-BFStuckPointKit_Example-frameworks.sh",
 				"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
 				"${BUILT_PRODUCTS_DIR}/AliyunOSSiOS/AliyunOSSiOS.framework",
+				"${BUILT_PRODUCTS_DIR}/BFAnalyzeKit/BFAnalyzeKit.framework",
 				"${BUILT_PRODUCTS_DIR}/BFCommonKit/BFCommonKit.framework",
 				"${BUILT_PRODUCTS_DIR}/BFNetRequestKit/BFNetRequestKit.framework",
 				"${BUILT_PRODUCTS_DIR}/BFUIKit/BFUIKit.framework",
@@ -297,6 +298,7 @@
 			outputPaths = (
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AliyunOSSiOS.framework",
+				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BFAnalyzeKit.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BFCommonKit.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BFNetRequestKit.framework",
 				"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/BFUIKit.framework",

+ 2 - 1
Example/Podfile

@@ -6,12 +6,13 @@ target 'BFStuckPointKit_Example' do
   source 'https://git.yishihui.com/iOS/BFSpecs.git'
   source 'https://github.com/CocoaPods/Specs.git'
   
-  pod 'BFStuckPointKit', :path => '../'
+  pod 'BFStuckPointKit',        :path => '../'
   pod 'BFCommonKit',            :path => '../../../BFCommonKit/Trunk'
   pod 'BFNetRequestKit',        :path => '../../../BFNetRequestKit/Trunk'
   pod 'BFUIKit',                :path => '../../../BFUIKit/Trunk'
   pod 'BFMaterialKit',          :path => '../../../BFMaterialKit/Trunk'
   pod 'BFMediaKit',             :path => '../../../BFMediaKit/Trunk'
+  pod 'BFAnalyzeKit',           :path => '../../../BFAnalyzeKit/Trunk'
   target 'BFStuckPointKit_Tests' do
     inherit! :search_paths
 

+ 23 - 4
Example/Podfile.lock

@@ -1,18 +1,32 @@
 PODS:
   - Alamofire (5.4.4)
   - AliyunOSSiOS (2.10.10)
+  - BFAnalyzeKit (0.1.0):
+    - BFCommonKit/BFEnums
+    - BFCommonKit/BFEnv
+    - BFCommonKit/BFProtocols
+    - BFNetRequestKit
   - BFCommonKit (1.5.2):
     - BFCommonKit/BFCategorys (= 1.5.2)
     - BFCommonKit/BFConfig (= 1.5.2)
     - BFCommonKit/BFEnums (= 1.5.2)
+    - BFCommonKit/BFEnv (= 1.5.2)
+    - BFCommonKit/BFModels (= 1.5.2)
+    - BFCommonKit/BFProtocols (= 1.5.2)
     - BFCommonKit/BFUtility (= 1.5.2)
     - BFCommonKit/BFVendors (= 1.5.2)
   - BFCommonKit/BFCategorys (1.5.2):
     - KingfisherWebP (= 1.3.0)
   - BFCommonKit/BFConfig (1.5.2):
-    - BFCommonKit/BFCategorys
     - BFCommonKit/BFEnums
   - BFCommonKit/BFEnums (1.5.2)
+  - BFCommonKit/BFEnv (1.5.2)
+  - BFCommonKit/BFModels (1.5.2):
+    - BFCommonKit/BFEnums
+    - ObjectMapper (= 4.2.0)
+    - RealmSwift (= 10.7.6)
+  - BFCommonKit/BFProtocols (1.5.2):
+    - BFCommonKit/BFEnums
   - BFCommonKit/BFUtility (1.5.2):
     - Alamofire (= 5.4.4)
     - BFCommonKit/BFCategorys
@@ -32,6 +46,7 @@ PODS:
     - Alamofire (= 5.4.4)
   - BFStuckPointKit (0.1.0):
     - AliyunOSSiOS (= 2.10.10)
+    - BFAnalyzeKit
     - BFCommonKit
     - BFMaterialKit
     - BFMediaKit
@@ -113,6 +128,7 @@ PODS:
   - WechatOpenSDK-Swift (1.8.7.1)
 
 DEPENDENCIES:
+  - BFAnalyzeKit (from `../../../BFAnalyzeKit/Trunk`)
   - BFCommonKit (from `../../../BFCommonKit/Trunk`)
   - BFMaterialKit (from `../../../BFMaterialKit/Trunk`)
   - BFMediaKit (from `../../../BFMediaKit/Trunk`)
@@ -144,6 +160,8 @@ SPEC REPOS:
     - Toast-Swift
 
 EXTERNAL SOURCES:
+  BFAnalyzeKit:
+    :path: "../../../BFAnalyzeKit/Trunk"
   BFCommonKit:
     :path: "../../../BFCommonKit/Trunk"
   BFMaterialKit:
@@ -160,11 +178,12 @@ EXTERNAL SOURCES:
 SPEC CHECKSUMS:
   Alamofire: f3b09a368f1582ab751b3fff5460276e0d2cf5c9
   AliyunOSSiOS: b8f1dfc229cd9abf68c8ee0cb245c2d66e00dd96
-  BFCommonKit: e5b316ffd438574754886fbd93c904318bc7df7a
+  BFAnalyzeKit: 457ecf2fcb09cb83417e2adea50f98c60a50ddec
+  BFCommonKit: 86a8c8818c9430b01ee654ba60eb5cb8b863c0e6
   BFMaterialKit: 0a15786e2a55587f1b2b4b74c0bff5321ebf3630
   BFMediaKit: 84a6f93a937e09a1b5b8ef56759a24d7c293b09e
   BFNetRequestKit: 1d074023eafe7c272fab4ed3a608e685902235d0
-  BFStuckPointKit: 404c005065083cb6bd7aa962ffe362ad97ccc0d9
+  BFStuckPointKit: e3b2dcd9e2cfd5e5e1819f0866f258f7cc2dff16
   BFUIKit: f209190fb92c8f9050554ac5950a2e4852e8a481
   Bugly: 88bc32c0acc6fef7b74d610f0319ee7560d6b9fe
   FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
@@ -184,6 +203,6 @@ SPEC CHECKSUMS:
   TXLiteAVSDK_Player: 2b60edf893a8e82165a5e4b961a6cb347b10be4a
   WechatOpenSDK-Swift: 18a8f7b12e745c30acc013f72a9f8a25aad6e216
 
-PODFILE CHECKSUM: 39940a1badb68d5479ef7469431e0a2326a62470
+PODFILE CHECKSUM: 41253a5ed5537e1f684add7b416e88be93d3812f
 
 COCOAPODS: 1.11.2