Selaa lähdekoodia

feat:删除网络模块

kailen 2 kuukautta sitten
vanhempi
commit
d584bf94a2
25 muutettua tiedostoa jossa 38 lisäystä ja 1573 poistoa
  1. 1 4
      Podfile
  2. 8 22
      Podfile.lock
  3. 0 78
      TSLiveWallpaper.xcodeproj/project.pbxproj
  4. 2 34
      TSLiveWallpaper/AppDelegate.swift
  5. 0 138
      TSLiveWallpaper/Business/AdMob/ADLoadingViewController.swift
  6. 0 88
      TSLiveWallpaper/Business/AdMob/ADScene.swift
  7. 0 50
      TSLiveWallpaper/Business/AdMob/AppConfig.swift
  8. 0 62
      TSLiveWallpaper/Business/AdMob/GoogleMobileAdsConsentManager.swift
  9. 3 17
      TSLiveWallpaper/Business/TSMusic/Detail/Controller/PlayDetailViewController.swift
  10. 2 22
      TSLiveWallpaper/Business/TSMusic/Detail/PlayerManager.swift
  11. 5 28
      TSLiveWallpaper/Business/TSMusic/List/Controller/MusicHomeContainerViewController.swift
  12. 6 29
      TSLiveWallpaper/Business/TSMusic/List/Controller/MusicPlaylistContainerViewController.swift
  13. 0 1
      TSLiveWallpaper/Business/TSMusic/List/Controller/SongListViewController+Target.swift
  14. 1 10
      TSLiveWallpaper/Business/TSMusic/List/Controller/SongListViewController.swift
  15. 1 6
      TSLiveWallpaper/Business/TSMusic/OC/IJKPlayer/Core/SJIJKMediaPlayer.m
  16. 1 8
      TSLiveWallpaper/Business/TSMusic/OC/IJKPlayer/SJIJKMediaPlaybackController.m
  17. 0 1
      TSLiveWallpaper/Business/TSMusic/PlayList/Controller/PlaylistDetailViewController.swift
  18. 8 13
      TSLiveWallpaper/Business/TSMusic/PlayList/Controller/PlaylistViewController.swift
  19. 0 217
      TSLiveWallpaper/Business/TSMusic/Search/Controller/SearchOnlineViewController.swift
  20. 0 93
      TSLiveWallpaper/Business/TSMusic/Search/ViewModel/SearchViewModel.swift
  21. 0 9
      TSLiveWallpaper/Business/TSMusic/SearchResult/BaseDataModel.swift
  22. 0 109
      TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultStateView.swift
  23. 0 311
      TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultViewController.swift
  24. 0 153
      TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultViewModel.swift
  25. 0 70
      TSLiveWallpaper/LaunchVC/TSLaunchVC.swift

+ 1 - 4
Podfile

@@ -14,20 +14,17 @@ target 'TSLiveWallpaper' do
   pod 'SVProgressHUD'
   pod 'Kingfisher', '7.10.0'
   pod 'TYCyclePagerView'
-  pod 'Google-Mobile-Ads-SDK'
   pod 'Alamofire'
   
   pod 'TZImagePickerController'
   pod 'MarqueeLabel'
   pod 'MJRefresh'
   pod 'TSVideoKit', :git => 'https://gitee.com/WanlanNeel/tsvideo-kit.git', :branch => 'feature/mini'
-  pod "IJKMediaPlayerKit", :podspec => 'https://github.com/debugly/ijkplayer/releases/download/k0.11.8/IJKMediaPlayerKit.spec.json'
+  pod "IJKMediaFramework", :podspec => 'https://github.com/debugly/ijkplayer/releases/download/k0.8.9/IJKMediaFramework.spec.json'
   pod 'KLExtension',:git=>"https://gitee.com/WanlanNeel/klextension.git"
   pod 'KLTips',:git=>"https://gitee.com/WanlanNeel/kltips.git"
   pod 'Localize-Swift', '~> 3.2'
   pod 'BetterSegmentedControl', '~> 2.0'
-  pod 'Google-Mobile-Ads-SDK'
-  pod 'ADManager', :path => '../TSCoacopods/ADManager'
   
 end
 

+ 8 - 22
Podfile.lock

@@ -1,6 +1,4 @@
 PODS:
-  - ADManager (1.0):
-    - Google-Mobile-Ads-SDK
   - AFNetworking (4.0.1):
     - AFNetworking/NSURLSession (= 4.0.1)
     - AFNetworking/Reachability (= 4.0.1)
@@ -18,10 +16,7 @@ PODS:
     - AFNetworking/NSURLSession
   - Alamofire (5.10.2)
   - BetterSegmentedControl (2.0.1)
-  - Google-Mobile-Ads-SDK (11.12.0):
-    - GoogleUserMessagingPlatform (>= 1.1)
-  - GoogleUserMessagingPlatform (2.7.0)
-  - IJKMediaPlayerKit (0.11.8)
+  - IJKMediaFramework (0.8.9)
   - Kingfisher (7.10.0)
   - KLExtension (0.1.0)
   - KLTips (0.1.0)
@@ -113,11 +108,9 @@ PODS:
   - YYModel (1.0.4)
 
 DEPENDENCIES:
-  - ADManager (from `../TSCoacopods/ADManager`)
   - Alamofire
   - BetterSegmentedControl (~> 2.0)
-  - Google-Mobile-Ads-SDK
-  - IJKMediaPlayerKit (from `https://github.com/debugly/ijkplayer/releases/download/k0.11.8/IJKMediaPlayerKit.spec.json`)
+  - IJKMediaFramework (from `https://github.com/debugly/ijkplayer/releases/download/k0.8.9/IJKMediaFramework.spec.json`)
   - Kingfisher (= 7.10.0)
   - KLExtension (from `https://gitee.com/WanlanNeel/klextension.git`)
   - KLTips (from `https://gitee.com/WanlanNeel/kltips.git`)
@@ -136,8 +129,6 @@ SPEC REPOS:
     - AFNetworking
     - Alamofire
     - BetterSegmentedControl
-    - Google-Mobile-Ads-SDK
-    - GoogleUserMessagingPlatform
     - Kingfisher
     - Localize-Swift
     - MarqueeLabel
@@ -154,10 +145,8 @@ SPEC REPOS:
     - YYModel
 
 EXTERNAL SOURCES:
-  ADManager:
-    :path: "../TSCoacopods/ADManager"
-  IJKMediaPlayerKit:
-    :podspec: https://github.com/debugly/ijkplayer/releases/download/k0.11.8/IJKMediaPlayerKit.spec.json
+  IJKMediaFramework:
+    :podspec: https://github.com/debugly/ijkplayer/releases/download/k0.8.9/IJKMediaFramework.spec.json
   KLExtension:
     :git: https://gitee.com/WanlanNeel/klextension.git
   KLTips:
@@ -178,13 +167,10 @@ CHECKOUT OPTIONS:
     :git: https://gitee.com/WanlanNeel/tsvideo-kit.git
 
 SPEC CHECKSUMS:
-  ADManager: 69cd1b8805b2e64a72315ed2abfa1f1c02f8f879
   AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58
   Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
   BetterSegmentedControl: 09607b27861d49cbce48b7673b74f9150a3d371a
-  Google-Mobile-Ads-SDK: 3a76704456669fbed2057efc8bdb99050ad0e3fb
-  GoogleUserMessagingPlatform: a8b56893477f67212fbc8411c139e61d463349f5
-  IJKMediaPlayerKit: 3444702ec61bc649e7e81a9c0e19fda661bef1ce
+  IJKMediaFramework: aa80bbca8d5443171b2c4d5cc025cc013b2172e3
   Kingfisher: a18f05d3b6d37d8650ee4a3e61d57a28fc6207f6
   KLExtension: f8b2a92125ad4bbfc8920ed5e7269aefcdcaa0b3
   KLTips: 5cf05efac78b9c813887460bebbf436582b20536
@@ -198,11 +184,11 @@ SPEC CHECKSUMS:
   SJVideoPlayer: 4f09814f58522e0975cb2dccfda925f6c8643467
   SnapKit: d612e99e678a2d3b95bf60b0705ed0a35c03484a
   SVProgressHUD: 4837c74bdfe2e51e8821c397825996a8d7de6e22
-  TSVideoKit: 16761d4bf8bb9e8af192459ae9eb01a213fc1531
+  TSVideoKit: 922402ea051d72e78224f22d37c10fdb2e378f60
   TYCyclePagerView: 2b051dade0615c70784aa34f40c646feeddb7344
   TZImagePickerController: d084a7b97c82d387e7669dd86dc9a9057500aacf
   YYModel: 2a7fdd96aaa4b86a824e26d0c517de8928c04b30
 
-PODFILE CHECKSUM: 436b32429cb708cca90f47b70a0a376c1a6e0417
+PODFILE CHECKSUM: 07b13e829723b93a980ec99e475f9251e550cf08
 
-COCOAPODS: 1.15.2
+COCOAPODS: 1.16.2

+ 0 - 78
TSLiveWallpaper.xcodeproj/project.pbxproj

@@ -9,7 +9,6 @@
 /* Begin PBXBuildFile section */
 		059E844A164B0E39971303B9 /* Pods_TSLiveWallpaper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E33A770AEFA5810AED7219D3 /* Pods_TSLiveWallpaper.framework */; };
 		60553F722D3B528A00BAAD7F /* PlayDetailListViewContoller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F242D3B528A00BAAD7F /* PlayDetailListViewContoller.swift */; };
-		60553F732D3B528A00BAAD7F /* SearchResultViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F0F2D3B528A00BAAD7F /* SearchResultViewModel.swift */; };
 		60553F742D3B528A00BAAD7F /* Consts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F282D3B528A00BAAD7F /* Consts.swift */; };
 		60553F752D3B528A00BAAD7F /* MusicEmptyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F6E2D3B528A00BAAD7F /* MusicEmptyView.swift */; };
 		60553F762D3B528A00BAAD7F /* CWMutiSelectOpeateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F392D3B528A00BAAD7F /* CWMutiSelectOpeateView.swift */; };
@@ -24,13 +23,11 @@
 		60553F7F2D3B528A00BAAD7F /* OperateTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F3A2D3B528A00BAAD7F /* OperateTopView.swift */; };
 		60553F802D3B528A00BAAD7F /* PlayDetailViewController+Ext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F502D3B528A00BAAD7F /* PlayDetailViewController+Ext.swift */; };
 		60553F812D3B528A00BAAD7F /* SJIJKMediaPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 60553F042D3B528A00BAAD7F /* SJIJKMediaPlayer.m */; };
-		60553F822D3B528A00BAAD7F /* SearchResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F0E2D3B528A00BAAD7F /* SearchResultViewController.swift */; };
 		60553F832D3B528A00BAAD7F /* THUD+CW.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F6A2D3B528A00BAAD7F /* THUD+CW.swift */; };
 		60553F842D3B528A00BAAD7F /* SongListManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F1D2D3B528A00BAAD7F /* SongListManageViewModel.swift */; };
 		60553F852D3B528A00BAAD7F /* SongDownloadCellViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F5B2D3B528A00BAAD7F /* SongDownloadCellViewModel.swift */; };
 		60553F862D3B528A00BAAD7F /* PlayDetailControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F4B2D3B528A00BAAD7F /* PlayDetailControlView.swift */; };
 		60553F872D3B528A00BAAD7F /* PlayDetailListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F1E2D3B528A00BAAD7F /* PlayDetailListViewModel.swift */; };
-		60553F882D3B528A00BAAD7F /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F3C2D3B528A00BAAD7F /* SearchViewModel.swift */; };
 		60553F892D3B528A00BAAD7F /* CWOperateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F352D3B528A00BAAD7F /* CWOperateViewController.swift */; };
 		60553F8A2D3B528A00BAAD7F /* THUDProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F692D3B528A00BAAD7F /* THUDProtocol.swift */; };
 		60553F8B2D3B528A00BAAD7F /* THUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F682D3B528A00BAAD7F /* THUD.swift */; };
@@ -44,7 +41,6 @@
 		60553F932D3B528A00BAAD7F /* CWSearchTextBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F402D3B528A00BAAD7F /* CWSearchTextBar.swift */; };
 		60553F942D3B528A00BAAD7F /* SongListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F542D3B528A00BAAD7F /* SongListCell.swift */; };
 		60553F952D3B528A00BAAD7F /* AddPlayListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F1C2D3B528A00BAAD7F /* AddPlayListViewModel.swift */; };
-		60553F962D3B528A00BAAD7F /* BaseDataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F102D3B528A00BAAD7F /* BaseDataModel.swift */; };
 		60553F972D3B528A00BAAD7F /* PlayDetailPlaceHolderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F4C2D3B528A00BAAD7F /* PlayDetailPlaceHolderView.swift */; };
 		60553F982D3B528A00BAAD7F /* SJIJKMediaPlaybackController.m in Sources */ = {isa = PBXBuildFile; fileRef = 60553F0A2D3B528A00BAAD7F /* SJIJKMediaPlaybackController.m */; };
 		60553F992D3B528A00BAAD7F /* FilterBarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F2D2D3B528A00BAAD7F /* FilterBarViewModel.swift */; };
@@ -52,7 +48,6 @@
 		60553F9B2D3B528A00BAAD7F /* LWSearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F3F2D3B528A00BAAD7F /* LWSearchBar.swift */; };
 		60553F9C2D3B528A00BAAD7F /* BubbleMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F6D2D3B528A00BAAD7F /* BubbleMenuView.swift */; };
 		60553F9D2D3B528A00BAAD7F /* SongListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F5C2D3B528A00BAAD7F /* SongListViewModel.swift */; };
-		60553F9E2D3B528A00BAAD7F /* SearchResultStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F112D3B528A00BAAD7F /* SearchResultStateView.swift */; };
 		60553F9F2D3B528A00BAAD7F /* FilterBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F2E2D3B528A00BAAD7F /* FilterBarView.swift */; };
 		60553FA02D3B528A00BAAD7F /* SongListViewController+Target.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F5F2D3B528A00BAAD7F /* SongListViewController+Target.swift */; };
 		60553FA12D3B528A00BAAD7F /* ToastView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F6B2D3B528A00BAAD7F /* ToastView.swift */; };
@@ -82,7 +77,6 @@
 		60553FB92D3B528A00BAAD7F /* CDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F572D3B528A00BAAD7F /* CDView.swift */; };
 		60553FBA2D3B528A00BAAD7F /* NotifactionKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F662D3B528A00BAAD7F /* NotifactionKey.swift */; };
 		60553FBB2D3B528A00BAAD7F /* PlayListAddCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F142D3B528A00BAAD7F /* PlayListAddCell.swift */; };
-		60553FBC2D3B528A00BAAD7F /* SearchOnlineViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F452D3B528A00BAAD7F /* SearchOnlineViewController.swift */; };
 		60553FBD2D3B528A00BAAD7F /* SpacedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F6F2D3B528A00BAAD7F /* SpacedButton.swift */; };
 		60553FBE2D3B528A00BAAD7F /* BasePresentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F622D3B528A00BAAD7F /* BasePresentViewController.swift */; };
 		60553FBF2D3B528A00BAAD7F /* PlayListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553F132D3B528A00BAAD7F /* PlayListCell.swift */; };
@@ -103,10 +97,6 @@
 		60553FE32D3DF12200BAAD7F /* CustomSegementItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60553FE22D3DF12200BAAD7F /* CustomSegementItem.swift */; };
 		606372D82D545E6C005C82CF /* Example Music.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 606372D72D545E6C005C82CF /* Example Music.mp3 */; };
 		606372DA2D545F0D005C82CF /* ExampleIniter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372D92D545F0D005C82CF /* ExampleIniter.swift */; };
-		606372DD2D54999C005C82CF /* ADScene.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372DC2D54999C005C82CF /* ADScene.swift */; };
-		606372DF2D54BBB5005C82CF /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372DE2D54BBB5005C82CF /* AppConfig.swift */; };
-		606372E12D54BC37005C82CF /* GoogleMobileAdsConsentManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372E02D54BC37005C82CF /* GoogleMobileAdsConsentManager.swift */; };
-		606372E32D55A995005C82CF /* ADLoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372E22D55A995005C82CF /* ADLoadingViewController.swift */; };
 		606372E52D55BAB8005C82CF /* GuideBubbleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372E42D55BAB8005C82CF /* GuideBubbleView.swift */; };
 		606372E72D5705F4005C82CF /* MusicPlaylistContainerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 606372E62D5705F4005C82CF /* MusicPlaylistContainerViewController.swift */; };
 		609B6EA52D6F1221007942D4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 609B6EA32D6F1221007942D4 /* Localizable.strings */; };
@@ -221,10 +211,6 @@
 		60553F092D3B528A00BAAD7F /* SJIJKMediaPlaybackController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SJIJKMediaPlaybackController.h; sourceTree = "<group>"; };
 		60553F0A2D3B528A00BAAD7F /* SJIJKMediaPlaybackController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SJIJKMediaPlaybackController.m; sourceTree = "<group>"; };
 		60553F0B2D3B528A00BAAD7F /* TSAvatar-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TSAvatar-Header.h"; sourceTree = "<group>"; };
-		60553F0E2D3B528A00BAAD7F /* SearchResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewController.swift; sourceTree = "<group>"; };
-		60553F0F2D3B528A00BAAD7F /* SearchResultViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultViewModel.swift; sourceTree = "<group>"; };
-		60553F102D3B528A00BAAD7F /* BaseDataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseDataModel.swift; sourceTree = "<group>"; };
-		60553F112D3B528A00BAAD7F /* SearchResultStateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchResultStateView.swift; sourceTree = "<group>"; };
 		60553F132D3B528A00BAAD7F /* PlayListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayListCell.swift; sourceTree = "<group>"; };
 		60553F142D3B528A00BAAD7F /* PlayListAddCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayListAddCell.swift; sourceTree = "<group>"; };
 		60553F152D3B528A00BAAD7F /* PlayDetailListViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayDetailListViewCell.swift; sourceTree = "<group>"; };
@@ -258,14 +244,12 @@
 		60553F382D3B528A00BAAD7F /* CWOperateButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CWOperateButton.swift; sourceTree = "<group>"; };
 		60553F392D3B528A00BAAD7F /* CWMutiSelectOpeateView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CWMutiSelectOpeateView.swift; sourceTree = "<group>"; };
 		60553F3A2D3B528A00BAAD7F /* OperateTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperateTopView.swift; sourceTree = "<group>"; };
-		60553F3C2D3B528A00BAAD7F /* SearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchViewModel.swift; sourceTree = "<group>"; };
 		60553F3D2D3B528A00BAAD7F /* LocalSearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalSearchViewModel.swift; sourceTree = "<group>"; };
 		60553F3F2D3B528A00BAAD7F /* LWSearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LWSearchBar.swift; sourceTree = "<group>"; };
 		60553F402D3B528A00BAAD7F /* CWSearchTextBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CWSearchTextBar.swift; sourceTree = "<group>"; };
 		60553F412D3B528A00BAAD7F /* CustomTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomTextField.swift; sourceTree = "<group>"; };
 		60553F422D3B528A00BAAD7F /* TagListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagListView.swift; sourceTree = "<group>"; };
 		60553F432D3B528A00BAAD7F /* RelateSeachCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelateSeachCell.swift; sourceTree = "<group>"; };
-		60553F452D3B528A00BAAD7F /* SearchOnlineViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchOnlineViewController.swift; sourceTree = "<group>"; };
 		60553F462D3B528A00BAAD7F /* LocalSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalSearchViewController.swift; sourceTree = "<group>"; };
 		60553F492D3B528A00BAAD7F /* PlayButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayButtonView.swift; sourceTree = "<group>"; };
 		60553F4A2D3B528A00BAAD7F /* PlayDetailTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayDetailTopView.swift; sourceTree = "<group>"; };
@@ -312,10 +296,6 @@
 		60553FE22D3DF12200BAAD7F /* CustomSegementItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomSegementItem.swift; sourceTree = "<group>"; };
 		606372D72D545E6C005C82CF /* Example Music.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "Example Music.mp3"; sourceTree = "<group>"; };
 		606372D92D545F0D005C82CF /* ExampleIniter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleIniter.swift; sourceTree = "<group>"; };
-		606372DC2D54999C005C82CF /* ADScene.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ADScene.swift; sourceTree = "<group>"; };
-		606372DE2D54BBB5005C82CF /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConfig.swift; sourceTree = "<group>"; };
-		606372E02D54BC37005C82CF /* GoogleMobileAdsConsentManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GoogleMobileAdsConsentManager.swift; sourceTree = "<group>"; };
-		606372E22D55A995005C82CF /* ADLoadingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ADLoadingViewController.swift; sourceTree = "<group>"; };
 		606372E42D55BAB8005C82CF /* GuideBubbleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuideBubbleView.swift; sourceTree = "<group>"; };
 		606372E62D5705F4005C82CF /* MusicPlaylistContainerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MusicPlaylistContainerViewController.swift; sourceTree = "<group>"; };
 		609B6E9F2D6F11D0007942D4 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/LaunchScreen.strings; sourceTree = "<group>"; };
@@ -462,7 +442,6 @@
 			children = (
 				60553FCF2D3B54A400BAAD7F /* MusicBase */,
 				60553F0D2D3B528A00BAAD7F /* OC */,
-				60553F122D3B528A00BAAD7F /* SearchResult */,
 				60553F272D3B528A00BAAD7F /* PlayList */,
 				60553F292D3B528A00BAAD7F /* Consts */,
 				60553F2B2D3B528A00BAAD7F /* Import */,
@@ -506,17 +485,6 @@
 			path = OC;
 			sourceTree = "<group>";
 		};
-		60553F122D3B528A00BAAD7F /* SearchResult */ = {
-			isa = PBXGroup;
-			children = (
-				60553F0E2D3B528A00BAAD7F /* SearchResultViewController.swift */,
-				60553F0F2D3B528A00BAAD7F /* SearchResultViewModel.swift */,
-				60553F102D3B528A00BAAD7F /* BaseDataModel.swift */,
-				60553F112D3B528A00BAAD7F /* SearchResultStateView.swift */,
-			);
-			path = SearchResult;
-			sourceTree = "<group>";
-		};
 		60553F192D3B528A00BAAD7F /* Views */ = {
 			isa = PBXGroup;
 			children = (
@@ -606,7 +574,6 @@
 		60553F3E2D3B528A00BAAD7F /* ViewModel */ = {
 			isa = PBXGroup;
 			children = (
-				60553F3C2D3B528A00BAAD7F /* SearchViewModel.swift */,
 				60553F3D2D3B528A00BAAD7F /* LocalSearchViewModel.swift */,
 			);
 			path = ViewModel;
@@ -627,7 +594,6 @@
 		60553F472D3B528A00BAAD7F /* Controller */ = {
 			isa = PBXGroup;
 			children = (
-				60553F452D3B528A00BAAD7F /* SearchOnlineViewController.swift */,
 				60553F462D3B528A00BAAD7F /* LocalSearchViewController.swift */,
 			);
 			path = Controller;
@@ -764,17 +730,6 @@
 			path = Example;
 			sourceTree = "<group>";
 		};
-		606372DB2D549998005C82CF /* AdMob */ = {
-			isa = PBXGroup;
-			children = (
-				606372E02D54BC37005C82CF /* GoogleMobileAdsConsentManager.swift */,
-				606372DE2D54BBB5005C82CF /* AppConfig.swift */,
-				606372DC2D54999C005C82CF /* ADScene.swift */,
-				606372E22D55A995005C82CF /* ADLoadingViewController.swift */,
-			);
-			path = AdMob;
-			sourceTree = "<group>";
-		};
 		A81CA45F2D1567CD00A3AAC8 /* LaunchVC */ = {
 			isa = PBXGroup;
 			children = (
@@ -894,7 +849,6 @@
 		A81CA48C2D15855300A3AAC8 /* Business */ = {
 			isa = PBXGroup;
 			children = (
-				606372DB2D549998005C82CF /* AdMob */,
 				60553F022D3B4DF800BAAD7F /* TSMusic */,
 				A8F76C3A2D35022300AA6E93 /* TSPurchaseMembershipVC */,
 				A8477C952D2272FB00DF0B93 /* TSBusinessWebVC */,
@@ -1247,7 +1201,6 @@
 				A8E56BD12D1520DD003C54AF /* Frameworks */,
 				A8E56BD22D1520DD003C54AF /* Resources */,
 				CD3560202ECC0B9D97903E2D /* [CP] Embed Pods Frameworks */,
-				B40DAD76327452C48197C98B /* [CP] Copy Pods Resources */,
 			);
 			buildRules = (
 			);
@@ -1288,8 +1241,6 @@
 			);
 			mainGroup = A8E56BCB2D1520DD003C54AF;
 			minimizedProjectReferenceProxies = 1;
-			packageReferences = (
-			);
 			productRefGroup = A8E56BD52D1520DD003C54AF /* Products */;
 			projectDirPath = "";
 			projectRoot = "";
@@ -1339,23 +1290,6 @@
 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
 			showEnvVarsInLog = 0;
 		};
-		B40DAD76327452C48197C98B /* [CP] Copy Pods Resources */ = {
-			isa = PBXShellScriptBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-			);
-			inputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-TSLiveWallpaper/Pods-TSLiveWallpaper-resources-${CONFIGURATION}-input-files.xcfilelist",
-			);
-			name = "[CP] Copy Pods Resources";
-			outputFileListPaths = (
-				"${PODS_ROOT}/Target Support Files/Pods-TSLiveWallpaper/Pods-TSLiveWallpaper-resources-${CONFIGURATION}-output-files.xcfilelist",
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-			shellPath = /bin/sh;
-			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-TSLiveWallpaper/Pods-TSLiveWallpaper-resources.sh\"\n";
-			showEnvVarsInLog = 0;
-		};
 		CD3560202ECC0B9D97903E2D /* [CP] Embed Pods Frameworks */ = {
 			isa = PBXShellScriptBuildPhase;
 			buildActionMask = 2147483647;
@@ -1422,7 +1356,6 @@
 				60553FD72D3B54A400BAAD7F /* GradientText.swift in Sources */,
 				60553FD82D3B54A400BAAD7F /* LWBaseNavigationController.swift in Sources */,
 				60553FD92D3B54A400BAAD7F /* GradientBackgroundModifier.swift in Sources */,
-				606372DD2D54999C005C82CF /* ADScene.swift in Sources */,
 				A81F5B5D2D1A906C00740085 /* TSHomeDataModel.swift in Sources */,
 				A8F778B02D1AC17500BF55D5 /* TSBaseView.swift in Sources */,
 				A81CA49B2D1652CA00A3AAC8 /* TSHomeVC.swift in Sources */,
@@ -1450,7 +1383,6 @@
 				A81CA4AD2D16944B00A3AAC8 /* TSBaseTabViewCell.swift in Sources */,
 				A84C239A2D1E3A4300B61B55 /* GPVideoPlayerView.swift in Sources */,
 				60553F722D3B528A00BAAD7F /* PlayDetailListViewContoller.swift in Sources */,
-				60553F732D3B528A00BAAD7F /* SearchResultViewModel.swift in Sources */,
 				60553F742D3B528A00BAAD7F /* Consts.swift in Sources */,
 				60553F752D3B528A00BAAD7F /* MusicEmptyView.swift in Sources */,
 				60553F762D3B528A00BAAD7F /* CWMutiSelectOpeateView.swift in Sources */,
@@ -1465,14 +1397,11 @@
 				60553F7F2D3B528A00BAAD7F /* OperateTopView.swift in Sources */,
 				60553F802D3B528A00BAAD7F /* PlayDetailViewController+Ext.swift in Sources */,
 				60553F812D3B528A00BAAD7F /* SJIJKMediaPlayer.m in Sources */,
-				60553F822D3B528A00BAAD7F /* SearchResultViewController.swift in Sources */,
 				60553F832D3B528A00BAAD7F /* THUD+CW.swift in Sources */,
 				60553F842D3B528A00BAAD7F /* SongListManageViewModel.swift in Sources */,
 				60553F852D3B528A00BAAD7F /* SongDownloadCellViewModel.swift in Sources */,
 				60553F862D3B528A00BAAD7F /* PlayDetailControlView.swift in Sources */,
 				60553F872D3B528A00BAAD7F /* PlayDetailListViewModel.swift in Sources */,
-				606372E32D55A995005C82CF /* ADLoadingViewController.swift in Sources */,
-				60553F882D3B528A00BAAD7F /* SearchViewModel.swift in Sources */,
 				60553F892D3B528A00BAAD7F /* CWOperateViewController.swift in Sources */,
 				60553F8A2D3B528A00BAAD7F /* THUDProtocol.swift in Sources */,
 				60553F8B2D3B528A00BAAD7F /* THUD.swift in Sources */,
@@ -1486,17 +1415,14 @@
 				60553F932D3B528A00BAAD7F /* CWSearchTextBar.swift in Sources */,
 				60553F942D3B528A00BAAD7F /* SongListCell.swift in Sources */,
 				60553F952D3B528A00BAAD7F /* AddPlayListViewModel.swift in Sources */,
-				60553F962D3B528A00BAAD7F /* BaseDataModel.swift in Sources */,
 				60553F972D3B528A00BAAD7F /* PlayDetailPlaceHolderView.swift in Sources */,
 				60553F982D3B528A00BAAD7F /* SJIJKMediaPlaybackController.m in Sources */,
 				60553F992D3B528A00BAAD7F /* FilterBarViewModel.swift in Sources */,
 				60F82C0F2D43295100FFB08D /* MusicHomeContainerViewController.swift in Sources */,
 				60553F9A2D3B528A00BAAD7F /* PlayListManageView.swift in Sources */,
-				606372DF2D54BBB5005C82CF /* AppConfig.swift in Sources */,
 				60553F9B2D3B528A00BAAD7F /* LWSearchBar.swift in Sources */,
 				60553F9C2D3B528A00BAAD7F /* BubbleMenuView.swift in Sources */,
 				60553F9D2D3B528A00BAAD7F /* SongListViewModel.swift in Sources */,
-				60553F9E2D3B528A00BAAD7F /* SearchResultStateView.swift in Sources */,
 				60553F9F2D3B528A00BAAD7F /* FilterBarView.swift in Sources */,
 				60553FA02D3B528A00BAAD7F /* SongListViewController+Target.swift in Sources */,
 				60553FA12D3B528A00BAAD7F /* ToastView.swift in Sources */,
@@ -1526,7 +1452,6 @@
 				60553FB92D3B528A00BAAD7F /* CDView.swift in Sources */,
 				60553FBA2D3B528A00BAAD7F /* NotifactionKey.swift in Sources */,
 				60553FBB2D3B528A00BAAD7F /* PlayListAddCell.swift in Sources */,
-				60553FBC2D3B528A00BAAD7F /* SearchOnlineViewController.swift in Sources */,
 				60553FBD2D3B528A00BAAD7F /* SpacedButton.swift in Sources */,
 				60553FBE2D3B528A00BAAD7F /* BasePresentViewController.swift in Sources */,
 				60553FDF2D3B850C00BAAD7F /* TimeInterval+Ext.swift in Sources */,
@@ -1543,7 +1468,6 @@
 				A81CA4AE2D16944B00A3AAC8 /* TSBaseCollectionCell.swift in Sources */,
 				A81CA4772D15779E00A3AAC8 /* UIColor+Ex.swift in Sources */,
 				A81CA4952D1652B500A3AAC8 /* TSEditLiveVC.swift in Sources */,
-				606372E12D54BC37005C82CF /* GoogleMobileAdsConsentManager.swift in Sources */,
 				A83946332D1D66A900ABFF0D /* TSPrivacyPolicyVC.swift in Sources */,
 				A81CA47B2D15784800A3AAC8 /* Int+Ex.swift in Sources */,
 				A839463A2D1D6E3000ABFF0D /* TSRandomWallpaperTutorialsVC.swift in Sources */,
@@ -1625,7 +1549,6 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "Cloud Music";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "This app needs to access your location information while you're using it to provide relevant location services and features. We promise to only obtain your location information when you're using the app and to use it solely for providing services and features.";
 				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save wallpapers to your device.";
-				INFOPLIST_KEY_NSUserTrackingUsageDescription = "It will only be used to measure advertising efficiency without leaking any of your personal information.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
@@ -1666,7 +1589,6 @@
 				INFOPLIST_KEY_CFBundleDisplayName = "Cloud Music";
 				INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "This app needs to access your location information while you're using it to provide relevant location services and features. We promise to only obtain your location information when you're using the app and to use it solely for providing services and features.";
 				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save wallpapers to your device.";
-				INFOPLIST_KEY_NSUserTrackingUsageDescription = "It will only be used to measure advertising efficiency without leaking any of your personal information.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
 				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;

+ 2 - 34
TSLiveWallpaper/AppDelegate.swift

@@ -5,9 +5,6 @@
 //  Created by 100Years on 2024/12/19.i
 //
 
-import ADManager
-import AppTrackingTransparency
-import GoogleMobileAds
 import StoreKit
 import TSVideoKit
 import UIKit
@@ -39,7 +36,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     func initBaseDatas() {
         var config = TSConfiguration.default
         config.configurePath = "http://p.100yearslater.com/live/config"
-        TSVideoOperator.shared.loadWithConfiguration(config: config, needJs: true)
+        TSVideoOperator.shared.loadWithConfiguration(config: config, needJs: false)
 
         if let videoId = UserDefaults.standard.string(forKey: "lastedVideoId"),
            !videoId.isEmpty,
@@ -66,28 +63,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
         NotificationCenter.default.addObserver(self, selector: #selector(recordData), name: kGroupDownloadFinishNotifactionName, object: nil)
     }
 
-    static func requestAdTrack() {
-        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
-            ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
-                // 这里可以处理用户的选择
-                switch status {
-                case .authorized:
-                    print("授权成功,可以开始跟踪")
-                case .denied:
-                    print("用户拒绝了授权")
-                case .restricted:
-                    print("该设备的用户无法授权")
-                case .notDetermined:
-                    print("用户尚未做出选择")
-                @unknown default:
-                    print("未知状态")
-                }
-            })
-        }
-    }
-
     func applicationDidBecomeActive(_ application: UIApplication) {
-        AppDelegate.requestAdTrack()
     }
 
     func applicationWillTerminate(_ application: UIApplication) {
@@ -96,15 +72,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
     }
 
     func applicationWillEnterForeground(_ application: UIApplication) {
-        // 热启动显示开屏广告
-        if let topVC = UIApplication.defaultViewController?.topVc {
-            if PurchaseManager.default.isVip {
-                return
-            }
-            DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
-                ADManager.shared.showLaunchAdWhenActive(scene: ADScene.launch, from: topVC)
-            }
-        }
+   
     }
 }
 

+ 0 - 138
TSLiveWallpaper/Business/AdMob/ADLoadingViewController.swift

@@ -1,138 +0,0 @@
-//
-//  ADLoadingViewController.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/25.
-//
-
-import UIKit
-import ADManager
-
-class ADLoadingViewController: BasePresentViewController {
-    var adScene: ADScene = .unknow
-    var finishedHandler: ((Bool) -> Void)?
-
-    private let totalDuration: TimeInterval = 10
-    private var remindTimeInterval: TimeInterval = 0
-    private var loadCompletionHandler: ADCompletionHandler?
-
-    // 定时器
-    private var timer: DispatchSourceTimer?
-    override func viewDidLoad() {
-        super.viewDidLoad()
-
-        loadCompletionHandler = { [weak self] state in
-            guard let self = self else { return }
-
-            switch state {
-            case .willPresent:
-                THUD.hide()
-            case .finished:
-                let finishedHandler = self.finishedHandler
-                finishedHandler?(true)
-            case .fail:
-                self.stopTimer()
-                self.updateLoadingState(.failure)
-            case .loadSuccess:
-                self.stopTimer()
-                // 加载成功,且未超过计时,显示,超时则本次不展示
-                if remindTimeInterval > 0 {
-                    self.view.backgroundColor = .clear
-                    self.dismiss(animated: false) {
-                        if let vc = PlayerManager.shared.rootVc {
-                            vc.presentingViewController?.dismiss(animated: false)
-                            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
-                                ADManager.shared.showAd(scene: self.adScene, from: vc) { state in
-                                    switch state {
-                                    case .willPresent:
-                                        THUD.hide()
-                                    case .finished:
-                                        let finishedHandler = self.finishedHandler
-                                        finishedHandler?(true)
-                                    case .fail:
-                                        self.stopTimer()
-                                        self.updateLoadingState(.failure)
-                                    case .loadSuccess:
-                                        self.stopTimer()
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-        DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
-            self.startLoadAD()
-        }
-    }
-
-    override var shouldDismissWhenTapBackground: Bool {
-        return false
-    }
-
-    override var alertBackgroundColor: UIColor {
-        return .clear
-    }
-
-    func startLoadAD() {
-        updateLoadingState(.loading)
-        startTimer()
-
-        ADManager.shared.requestAd(for: adScene, completionHandler: loadCompletionHandler)
-    }
-
-    private func startTimer() {
-        remindTimeInterval = totalDuration
-        if timer == nil {
-            print("===剩余:\(remindTimeInterval)")
-            timer = DispatchSource.makeTimerSource(queue: DispatchQueue.global())
-            timer?.schedule(deadline: .now(), repeating: .milliseconds(200))
-            timer?.setEventHandler { [weak self] in
-                guard let self = self else { return }
-                self.remindTimeInterval -= 0.2
-                print("===剩余:\(self.remindTimeInterval)")
-                if self.remindTimeInterval <= 0 {
-                    self.stopTimer()
-                    DispatchQueue.main.async {
-                        self.updateLoadingState(.failure)
-                    }
-                }
-            }
-            timer?.resume()
-        }
-    }
-
-    func stopTimer() {
-        timer?.cancel()
-        timer = nil
-    }
-
-    enum State {
-        case loading
-        case failure
-    }
-
-    func updateLoadingState(_ state: State) {
-        switch state {
-        case .loading:
-            THUD.showLoading("Unlocking...".localized(), message: "It will be unlocked after an ad.".localized())
-        case .failure:
-            THUD.showLoading(UIImage(named: "img-pre-ad-emo-error"), message: "Loading Failed".localized()) { [weak self] isClose in
-                THUD.hide()
-                if isClose {
-                    self?.dismiss(animated: false) {
-                        self?.finishedHandler?(false)
-                    }
-                } else {
-                    self?.startLoadAD()
-                }
-            }
-        }
-    }
-
-    deinit {
-        print("===deinit: \(Self.description())")
-    }
-}

+ 0 - 88
TSLiveWallpaper/Business/AdMob/ADScene.swift

@@ -1,88 +0,0 @@
-//
-//  ADScene.swift
-//
-
-/**
- 随机壁纸的广告;
- ca-app-pub-4941656534177879/9888331446  下载的激励广告
- ca-app-pub-4941656534177879/5488145330 开屏广告
- ca-app-pub-4941656534177879/2201413111 播放的插屏广告(冷启动后,每个播放列表只展示一次,就是比如第一次点击没出,继续拉取,第二次点击出,第二次没出,第三次出)
- ca-app-pub-4941656534177879/9397376852 搜索广告(每次第一次点击搜索框出广告)
- */
-
-import ADManager
-import Foundation
-
-// TODO: !!!
-
-// #if DEBUG
-// private let GAD_ID_Launch                   = "ca-app-pub-3940256099942544/5575463023"
-// private let GAD_ID_Search_Insert            = "ca-app-pub-3940256099942544/4411468910"
-// private let GAD_ID_Play_Insert              = "ca-app-pub-3940256099942544/4411468910"
-// private let GAD_ID_Download_Reward          = "ca-app-pub-3940256099942544/1712485313"
-// private let GAD_ID_Playlist                 = "ca-app-pub-3940256099942544/4411468910"
-// private let GAD_ID_Pause                    = "ca-app-pub-3940256099942544/4411468910"
-
-// #else
-
-// 开屏广告
-private let GAD_ID_Launch = "ca-app-pub-4941656534177879/5488145330"
-// 点击搜索时弹出的插屏广告
-private let GAD_ID_Search_Insert = "ca-app-pub-4941656534177879/9397376852"
-// 播放视频时弹出的插屏广告
-private let GAD_ID_Play_Insert = "ca-app-pub-4941656534177879/2201413111"
-// 下载视频弹出的激励广告
-private let GAD_ID_Download_Reward = "ca-app-pub-4941656534177879/9888331446"
-// 歌单
-private let GAD_ID_Playlist = "ca-app-pub-4941656534177879/3683573641"
-// 暂停
-private let GAD_ID_Pause = "ca-app-pub-4941656534177879/7350252261"
-
-// #endif
-
-enum ADScene: CaseIterable, ADSceneProtocol {
-    case unknow
-    case launch // 开屏
-
-    case searchInsert // 进入搜索,插屏广告
-    case playInsert // 第一次进入视频播放,插屏广告
-    case downloadReward // 下载视频,激励广告
-    case playlist
-    case pause
-
-    static var prepareScenes: [ADScene] {
-        return [.searchInsert, .playInsert, .downloadReward, .playlist, .pause]
-    }
-
-    var adId: String {
-        switch self {
-        case .launch:
-            return GAD_ID_Launch
-        case .searchInsert:
-            return GAD_ID_Search_Insert
-        case .playInsert:
-            return GAD_ID_Play_Insert
-        case .downloadReward:
-            return GAD_ID_Download_Reward
-        case .playlist:
-            return GAD_ID_Playlist
-        case .pause:
-            return GAD_ID_Pause
-        case .unknow:
-            return ""
-        }
-    }
-
-    var adType: ADType {
-        switch self {
-        case .launch:
-            return .launch
-        case .searchInsert, .playInsert, .playlist,.pause:
-            return .interstitial
-        case .downloadReward:
-            return .reward
-        case .unknow:
-            return .unknow
-        }
-    }
-}

+ 0 - 50
TSLiveWallpaper/Business/AdMob/AppConfig.swift

@@ -1,50 +0,0 @@
-//
-//  AppConfig.swift
-//  PhysicalWallPaper
-//
-//  Created by nkl on 2024/12/16.
-//
-
-import Foundation
-
-class AppConfig {
-    static var appName: String = {
-        let appName = Bundle.main.infoDictionary?["CFBundleDisplayName"] as? String ?? "Dmanager"
-        return appName
-    }()
-    
-    static var appVersion: String = {
-        return Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
-    }()
-    
-    static let appLanguage: String = {
-        let systemLanguages = UserDefaults.standard.value(forKey: "AppleLanguages")
-        var currentLanguage: String?
-        if let arr = systemLanguages as? [String] {
-            currentLanguage = arr.first
-        } else if let str = systemLanguages as? String {
-            currentLanguage = str
-        }
-        return currentLanguage ?? "en"
-    }()
-    
-    static var isChinaRegion: Bool {
-        let localeId = Locale.current.identifier
-        return localeId.contains("_CN")
-    }
-    
-    static var isEURegion : Bool {
-        let EURegions: Set<String> = [
-            "BE", "FR", "DE", "IT", "LU", "NL", "DK", "IE", "GB", "GR",
-            "PT", "ES", "AT", "FI", "SE", "CY", "CZ", "EE", "HU", "LV",
-            "LT", "MT", "PL", "SK", "SI", "RO", "BG",
-        ]
-
-        guard let currentRegionCode = Locale.current.regionCode else {
-            print("无法确定当前地区")
-            return false
-        }
-
-        return EURegions.contains(currentRegionCode)
-    }
-}

+ 0 - 62
TSLiveWallpaper/Business/AdMob/GoogleMobileAdsConsentManager.swift

@@ -1,62 +0,0 @@
-//
-//  GoogleMobileAdsConsentManager.swift
-//  PhysicalWallPaper
-//
-//  Created by nkl on 2024/12/16.
-//
-
-import Foundation
-import GoogleMobileAds
-import UserMessagingPlatform
-
-/// Google Mobile Ads SDK 提供了用户消息平台(Google 的 IAB 认证的同意管理平台)作为在受 GDPR 影响的国家获取用户同意的解决方案之一。这是一个示例,你可以选择另一个同意管理平台来获取同意。
-
-class GoogleMobileAdsConsentManager: NSObject {
-    static let shared = GoogleMobileAdsConsentManager()
-
-    var canRequestAds: Bool {
-        return UMPConsentInformation.sharedInstance.canRequestAds
-    }
-
-    var isPrivacyOptionsRequired: Bool {
-        return UMPConsentInformation.sharedInstance.privacyOptionsRequirementStatus == .required
-    }
-
-    /// 辅助方法,调用 UMP SDK 方法请求同意信息并加载/显示同意表单(如果需要)。
-    func gatherConsent(
-        from consentFormPresentationviewController: UIViewController,
-        consentGatheringComplete: @escaping (Error?) -> Void
-    ) {
-        let parameters = UMPRequestParameters()
-
-        // 用于测试目的,你可以强制设置 UMPDebugGeography 为 EEA 或非 EEA。
-        let debugSettings = UMPDebugSettings()
-        #if DEBUG
-        debugSettings.geography = UMPDebugGeography.EEA
-        #endif
-        parameters.debugSettings = debugSettings
-
-        
-        // 应该在每次应用启动时调用请求同意信息的更新。
-        UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters) {
-            requestConsentError in
-            guard requestConsentError == nil else {
-                return consentGatheringComplete(requestConsentError)
-            }
-            UMPConsentForm.loadAndPresentIfRequired(from: consentFormPresentationviewController) {
-                loadAndPresentError in
-
-                // 已获取同意。
-                consentGatheringComplete(loadAndPresentError)
-            }
-        }
-    }
-
-    /// 辅助方法,调用 UMP SDK 方法来呈现隐私选项表单。
-    func presentPrivacyOptionsForm(
-        from viewController: UIViewController, completionHandler: @escaping (Error?) -> Void
-    ) {
-        UMPConsentForm.presentPrivacyOptionsForm(
-            from: viewController, completionHandler: completionHandler)
-    }
-}

+ 3 - 17
TSLiveWallpaper/Business/TSMusic/Detail/Controller/PlayDetailViewController.swift

@@ -461,23 +461,9 @@ extension PlayDetailViewController {
            let videoId = video.videoId {
             switch sender.downloadState {
             case .idle(isAnimate: false), .idle(isAnimate: true):
-                if PurchaseManager.default.isVip {
-                    TSNewDownloadManager.shared.downloadVideo(videoId: videoId, isAudio: false) { [weak self] downloader in
-                        self?.downloader = downloader
-                        self?.updateDownloader(id: videoId)
-                    }
-                } else {
-                    let loading = ADLoadingViewController()
-                    loading.adScene = .downloadReward
-                    loading.finishedHandler = { [weak self] finished in
-                        if finished {
-                            TSNewDownloadManager.shared.downloadVideo(videoId: videoId, isAudio: false) { [weak self] downloader in
-                                self?.downloader = downloader
-                                self?.updateDownloader(id: videoId)
-                            }
-                        }
-                    }
-                    PlayerManager.shared.rootVc?.present(loading, animated: false)
+                TSNewDownloadManager.shared.downloadVideo(videoId: videoId, isAudio: false) { [weak self] downloader in
+                    self?.downloader = downloader
+                    self?.updateDownloader(id: videoId)
                 }
                 break
             case .pause:

+ 2 - 22
TSLiveWallpaper/Business/TSMusic/Detail/PlayerManager.swift

@@ -5,7 +5,6 @@
 //  Created by nkl on 2024/9/13.
 //
 
-import ADManager
 // import ADManager
 import Foundation
 import KLTips
@@ -84,13 +83,6 @@ class PlayerManager {
         guard let player = player else {
             return
         }
-        /// 非vip且非国区,暂停要出广告
-        if !PurchaseManager.default.isVip,
-           player.playControl.player.isPlaying,
-           let rootVc = rootVc {
-            rootVc.presentingViewController?.dismiss(animated: false)
-            ADManager.shared.showAd(scene: ADScene.pause, from: rootVc)
-        }
         player.playControl.pauseOrPlay()
     }
 
@@ -123,20 +115,8 @@ class PlayerManager {
     }
 
     func playVideo(video: TSVideo, list: [TSVideo], scene: TSPlayScene, onceAdKey: String) {
-        if needShowOnceAd(key: onceAdKey),
-           let vc = rootVc,
-           !PurchaseManager.default.isVip {
-            ADManager.shared.showAd(scene: ADScene.playInsert, from: vc) { state in
-                if state == .finished || state == .fail {
-                    self.adPool.append(onceAdKey)
-                    self.showPlayerViewController()
-                    self.player?.playControl.playVideo(video: video, list: list, scene: scene)
-                }
-            }
-        } else {
-            showPlayerViewController()
-            player?.playControl.playVideo(video: video, list: list, scene: scene)
-        }
+        showPlayerViewController()
+        player?.playControl.playVideo(video: video, list: list, scene: scene)
     }
 
     func playVideo(onlineVideo: VideoOnlineModel, recommendDatas: [VideoOnlineModel], scene: TSPlayScene) {

+ 5 - 28
TSLiveWallpaper/Business/TSMusic/List/Controller/MusicHomeContainerViewController.swift

@@ -5,7 +5,6 @@
 //  Created by 倪锴伦 on 2025/1/20.
 //
 
-import ADManager
 import BetterSegmentedControl
 import Foundation
 import TSVideoKit
@@ -22,9 +21,9 @@ class MusicHomeContainerViewController: LWBGViewController {
     }()
 
     lazy var songlistVc: SongListViewController = SongListViewController()
-    
+
     var viewModel: MusicContainerViewModel = MusicContainerViewModel()
-    
+
     lazy var guideBubble: GuideBubbleView = {
         let guide = GuideBubbleView()
         guide.addTarget(self, action: #selector(dismissGuideBubble), for: .touchUpInside)
@@ -98,31 +97,9 @@ class MusicHomeContainerViewController: LWBGViewController {
     }
 
     @objc func showSearchViewController() {
-        if PurchaseManager.default.isVip {
-            if TSConfiguration.isYs {
-                let vc = SearchOnlineViewController()
-                vc.hidesBottomBarWhenPushed = true
-                navigationController?.pushViewController(vc, animated: true)
-            } else {
-                let vc = LocalSearchViewController()
-                vc.hidesBottomBarWhenPushed = true
-                navigationController?.pushViewController(vc, animated: true)
-            }
-        } else {
-            ADManager.shared.showAd(scene: ADScene.searchInsert, from: self) { state in
-                if state == .finished || state == .fail {
-                    if TSConfiguration.isYs {
-                        let vc = SearchOnlineViewController()
-                        vc.hidesBottomBarWhenPushed = true
-                        self.navigationController?.pushViewController(vc, animated: true)
-                    } else {
-                        let vc = LocalSearchViewController()
-                        vc.hidesBottomBarWhenPushed = true
-                        self.navigationController?.pushViewController(vc, animated: true)
-                    }
-                }
-            }
-        }
+        let vc = LocalSearchViewController()
+        vc.hidesBottomBarWhenPushed = true
+        navigationController?.pushViewController(vc, animated: true)
     }
 
     override func addChildren() {

+ 6 - 29
TSLiveWallpaper/Business/TSMusic/List/Controller/MusicPlaylistContainerViewController.swift

@@ -5,7 +5,6 @@
 //  Created by 倪锴伦 on 2025/1/20.
 //
 
-import ADManager
 import BetterSegmentedControl
 import Foundation
 import TSVideoKit
@@ -16,7 +15,7 @@ class MusicPlaylistContainerViewController: LWBGViewController {
         bar.iconView.image = .init(named: "ic_nav_playlist")
         return bar
     }()
-    
+
     lazy var searchBar: MusicSearchBar = MusicSearchBar()
     weak var importMenuView: BubbleMenuView?
 
@@ -27,9 +26,9 @@ class MusicPlaylistContainerViewController: LWBGViewController {
     }()
 
     lazy var playlistVc: PlaylistViewController = PlaylistViewController()
-    
+
     var viewModel: MusicContainerViewModel = MusicContainerViewModel()
-    
+
     lazy var guideBubble: GuideBubbleView = {
         let guide = GuideBubbleView()
         guide.addTarget(self, action: #selector(dismissGuideBubble), for: .touchUpInside)
@@ -103,31 +102,9 @@ class MusicPlaylistContainerViewController: LWBGViewController {
     }
 
     @objc func showSearchViewController() {
-        if PurchaseManager.default.isVip {
-            if TSConfiguration.isYs {
-                let vc = SearchOnlineViewController()
-                vc.hidesBottomBarWhenPushed = true
-                navigationController?.pushViewController(vc, animated: true)
-            } else {
-                let vc = LocalSearchViewController()
-                vc.hidesBottomBarWhenPushed = true
-                navigationController?.pushViewController(vc, animated: true)
-            }
-        } else {
-            ADManager.shared.showAd(scene: ADScene.searchInsert, from: self) { state in
-                if state == .finished || state == .fail {
-                    if TSConfiguration.isYs {
-                        let vc = SearchOnlineViewController()
-                        vc.hidesBottomBarWhenPushed = true
-                        self.navigationController?.pushViewController(vc, animated: true)
-                    } else {
-                        let vc = LocalSearchViewController()
-                        vc.hidesBottomBarWhenPushed = true
-                        self.navigationController?.pushViewController(vc, animated: true)
-                    }
-                }
-            }
-        }
+        let vc = LocalSearchViewController()
+        vc.hidesBottomBarWhenPushed = true
+        navigationController?.pushViewController(vc, animated: true)
     }
 
     override func addChildren() {

+ 0 - 1
TSLiveWallpaper/Business/TSMusic/List/Controller/SongListViewController+Target.swift

@@ -8,7 +8,6 @@
 //import ADManager
 import Foundation
 import TSVideoKit
-import ADManager
 
 extension SongListViewController {
    

+ 1 - 10
TSLiveWallpaper/Business/TSMusic/List/Controller/SongListViewController.swift

@@ -8,7 +8,6 @@
 import BetterSegmentedControl
 import Combine
 import Foundation
-import GoogleMobileAds
 import KLTips
 import TSVideoKit
 import UIKit
@@ -64,7 +63,6 @@ class SongListViewController: LWBGViewController {
         return tabView
     }()
 
-
     override func viewDidLoad() {
         super.viewDidLoad()
         bgImageView.image = nil
@@ -176,8 +174,6 @@ class SongListViewController: LWBGViewController {
         }
         present(vc, animated: true)
     }
-
-
 }
 
 extension SongListViewController: UITableViewDelegate {
@@ -210,12 +206,7 @@ extension SongListViewController: UITableViewDelegate {
     }
 
     @objc func emptyButtonAction() {
-        if TSConfiguration.isYs {
-            let vc = SearchOnlineViewController()
-            navigationController?.pushViewController(vc, animated: true)
-        } else {
-            ImportFilesManager.shared.openPhotoLibrary(parent: self)
-        }
+        ImportFilesManager.shared.openPhotoLibrary(parent: self)
     }
 
     override func viewWillDisappear(_ animated: Bool) {

+ 1 - 6
TSLiveWallpaper/Business/TSMusic/OC/IJKPlayer/Core/SJIJKMediaPlayer.m

@@ -6,12 +6,7 @@
 //
 
 #import "SJIJKMediaPlayer.h"
-#if __has_include(<IJKMediaPlayerKit/IJKMediaPlayerKit.h>)
-#import <IJKMediaPlayerKit/IJKMediaPlayerKit.h>
-#elif __has_include(<IJKMediaFrameworkWithSSL/IJKMediaFrameworkWithSSL.h>)
-#import <IJKMediaFrameworkWithSSL/IJKMediaFrameworkWithSSL.h>
-#else
-#endif
+#import "IJKMediaFramework/IJKMediaFramework.h"
 #import "NSTimer+SJAssetAdd.h"
 
 NS_ASSUME_NONNULL_BEGIN

+ 1 - 8
TSLiveWallpaper/Business/TSMusic/OC/IJKPlayer/SJIJKMediaPlaybackController.m

@@ -8,6 +8,7 @@
 
 #import "SJIJKMediaPlaybackController.h"
 #import "SJIJKMediaPlayerLayerView.h"
+#import "IJKMediaFramework/IJKMediaPlayer.h"
 
 #if __has_include(<SJUIKit/SJRunLoopTaskQueue.h>)
 #import <SJUIKit/SJRunLoopTaskQueue.h>
@@ -15,13 +16,6 @@
 #import "SJRunLoopTaskQueue.h"
 #endif
 
-#if __has_include(<IJKMediaPlayerKit/IJKMediaPlayerKit.h>)
-#import <IJKMediaPlayerKit/IJKMediaPlayerKit.h>
-#elif __has_include(<IJKMediaFrameworkWithSSL/IJKMediaFrameworkWithSSL.h>)
-#import <IJKMediaFrameworkWithSSL/IJKMediaFrameworkWithSSL.h>
-#else
-#endif
-
 NS_ASSUME_NONNULL_BEGIN
 @interface SJIJKMediaPlaybackController ()
 
@@ -37,7 +31,6 @@ NS_ASSUME_NONNULL_BEGIN
         [_options setOptionIntValue:0 forKey:@"reconnect" ofCategory:kIJKFFOptionCategoryPlayer];
         [_options setOptionIntValue:0 forKey:@"reconnect" ofCategory:kIJKFFOptionCategoryFormat];
         [_options setOptionIntValue:1 forKey:@"loglevel" ofCategory:kIJKFFOptionCategoryPlayer];
-
     }
     return _options;
 }

+ 0 - 1
TSLiveWallpaper/Business/TSMusic/PlayList/Controller/PlaylistDetailViewController.swift

@@ -7,7 +7,6 @@
 
 import Combine
 import Foundation
-import GoogleMobileAds
 import TSVideoKit
 
 class PlaylistDetailViewController: LWBGViewController, UITableViewDelegate {

+ 8 - 13
TSLiveWallpaper/Business/TSMusic/PlayList/Controller/PlaylistViewController.swift

@@ -5,7 +5,6 @@
 //  Created by ni on 2024/9/18.
 //
 
-import ADManager
 import Combine
 import Foundation
 import TSVideoKit
@@ -110,18 +109,14 @@ class PlaylistViewController: LWBGViewController, UITableViewDelegate {
         } else if indexPath.section == 1 {
             showLikeViewController()
         } else {
-            ADManager.shared.showAd(scene: ADScene.playlist, from: self) { state in
-                if state == .finished || state == .fail {
-                    if indexPath.row < self.viewModel.playLists.count {
-                        let list = self.viewModel.playLists[indexPath.row]
-                        let vModel: PlayListDetaiViewModel = .init()
-                        vModel.playlist = list
-                        vModel.listType = .playlist
-                        let vc = PlaylistDetailViewController(viewModel: vModel)
-                        vc.hidesBottomBarWhenPushed = true
-                        self.navigationController?.pushViewController(vc, animated: true)
-                    }
-                }
+            if indexPath.row < self.viewModel.playLists.count {
+                let list = self.viewModel.playLists[indexPath.row]
+                let vModel: PlayListDetaiViewModel = .init()
+                vModel.playlist = list
+                vModel.listType = .playlist
+                let vc = PlaylistDetailViewController(viewModel: vModel)
+                vc.hidesBottomBarWhenPushed = true
+                self.navigationController?.pushViewController(vc, animated: true)
             }
         }
     }

+ 0 - 217
TSLiveWallpaper/Business/TSMusic/Search/Controller/SearchOnlineViewController.swift

@@ -1,217 +0,0 @@
-//
-//  SearchOnlineViewController.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-
-import Combine
-import Foundation
-import KLExtension
-import SwiftUI
-import UIKit
-
-class SearchOnlineViewController: LWBGViewController {
-    private var cancellables = [AnyCancellable]()
-
-    lazy var searchBar: CWSearchTextBar = {
-        let bar = CWSearchTextBar()
-        bar.textFiled.delegate = self
-        bar.backgroundColor = .white.withAlphaComponent(0.1)
-        bar.textFiled.textColor = .white
-        bar.textFiled.attributedPlaceholder = NSAttributedString(string: "Search Music".localized(), attributes: [
-            .foregroundColor: UIColor.hexColor("#FFFFFF").withAlphaComponent(0.4),
-            .font: UIFont.systemFont(ofSize: 14)])
-        bar.customCornerRadius = 8
-        return bar
-    }()
-
-    lazy var backButton: UIButton = {
-        let btn = UIButton()
-        btn.setImage(UIImage(named: "navi_back_white"), for: .normal)
-        btn.addTarget(self, action: #selector(popupCurrentVc), for: .touchUpInside)
-        return btn
-    }()
-
-    lazy var searchButton: UIButton = {
-        let btn = UIButton()
-        btn.setTitle("Search".localized(), for: .normal)
-        btn.setTitleColor(.white, for: .normal)
-        btn.titleLabel?.font = .systemFont(ofSize: 14)
-        btn.addTarget(self, action: #selector(searchKeyWord), for: .touchUpInside)
-        return btn
-    }()
-
-    lazy var historyController: UIHostingController = {
-        let tagView = TagListView { tag in
-            self.beginSearchKeyword(history: tag)
-        }
-        let vc = UIHostingController(rootView: tagView)
-        vc.view.backgroundColor = .clear
-        return vc
-    }()
-
-    lazy var viewModel: SearchViewModel = SearchViewModel()
-
-    lazy var listView: UITableView = {
-        let tabView = UITableView()
-        tabView.dataSource = viewModel
-        tabView.backgroundColor = .clear
-        tabView.delegate = self
-        tabView.separatorStyle = .none
-        tabView.register(RelateSeachCell.self, forCellReuseIdentifier: "RelateSeachCell")
-        return tabView
-    }()
-
-    override func viewDidLoad() {
-        super.viewDidLoad()
-        addNotifaction()
-    }
-
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-        PlayerManager.shared.miniBar.isHidden = false
-        PlayerManager.shared.rootVc?.moveDownMiniBar()
-    }
-
-    override func viewDidAppear(_ animated: Bool) {
-        super.viewDidAppear(animated)
-        searchBar.textFiled.becomeFirstResponder()
-    }
-
-    override func addChildren() {
-        super.addChildren()
-        bgImageView.image = .viewMainBg
-        addChild(historyController)
-        view.addSubview(backButton)
-        view.addSubview(searchBar)
-        view.addSubview(searchButton)
-        view.addSubview(listView)
-        view.addSubview(historyController.view)
-    }
-
-    override func makeConstarints() {
-        super.makeConstarints()
-        backButton.snp.makeConstraints { make in
-            make.width.height.equalTo(40)
-            make.leading.equalToSuperview().offset(8)
-            make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
-        }
-
-        searchBar.snp.makeConstraints { make in
-            make.leading.equalTo(backButton.snp.trailing)
-            make.trailing.equalTo(searchButton.snp.leading).offset(-8)
-            make.height.equalTo(40)
-            make.centerY.equalTo(backButton)
-        }
-        searchButton.sizeToFit()
-        searchButton.snp.makeConstraints { make in
-            make.trailing.equalToSuperview().offset(-16)
-            make.centerY.equalTo(searchBar)
-            make.height.equalTo(40)
-            make.width.equalTo(searchButton.width)
-        }
-
-        listView.snp.makeConstraints { make in
-            make.leading.trailing.bottom.equalToSuperview()
-            make.top.equalTo(searchButton.snp.bottom)
-        }
-
-        historyController.view.snp.makeConstraints { make in
-            make.leading.trailing.bottom.equalToSuperview()
-            make.top.equalTo(searchButton.snp.bottom)
-        }
-    }
-
-    func beginSearchKeyword(history: HistoryModel) {
-        let vc = SearchResultViewController()
-        vc.viewModel.searchModel = .init(query: history.keyword)
-        recordHistory(keyword: history.keyword)
-        navigationController?.pushViewController(vc, animated: true)
-    }
-
-    @objc func searchKeyWord() {
-        if searchBar.textFiled.text?.isEmpty == true {
-            return
-        }
-        searchBar.textFiled.resignFirstResponder()
-        viewModel.keyword = searchBar.textFiled.text ?? ""
-
-        let vc = SearchResultViewController()
-        vc.viewModel.searchModel = .init(query: searchBar.textFiled.text ?? "")
-        recordHistory(keyword: searchBar.textFiled.text ?? "")
-        navigationController?.pushViewController(vc, animated: true)
-    }
-
-    override func addNotifaction() {
-        super.addNotifaction()
-        viewModel.$relateModel.receive(on: DispatchQueue.main).sink { [weak self] _ in
-            self?.listView.reloadData()
-        }.store(in: &cancellables)
-    }
-
-    override func viewDidDisappear(_ animated: Bool) {
-        super.viewDidDisappear(animated)
-    }
-
-    func cancelSubscriptions() {
-        // 取消所有订阅
-        cancellables.removeAll()
-    }
-
-    deinit {
-        cancelSubscriptions()
-    }
-}
-
-extension SearchOnlineViewController: UITextFieldDelegate, UITableViewDelegate, UIScrollViewDelegate {
-    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-        let items = viewModel.relateModel?.relateItems ?? []
-        if indexPath.row < items.count {
-            if let keyword = viewModel.relateModel?.relateItems[indexPath.row] {
-                let vc = SearchResultViewController()
-                vc.viewModel.searchModel = .init(query: keyword)
-                recordHistory(keyword: keyword)
-                navigationController?.pushViewController(vc, animated: true)
-            }
-        }
-
-        searchBar.textFiled.resignFirstResponder()
-    }
-
-    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
-        let originalText = textField.text ?? ""
-        // Calculate the new text after replacement
-        let updatedText = (originalText as NSString).replacingCharacters(in: range, with: string)
-        listView.isHidden = updatedText.isEmpty
-        historyController.view.isHidden = !updatedText.isEmpty
-        viewModel.keyword = updatedText
-
-        return true
-    }
-
-    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
-        searchKeyWord()
-        return true
-    }
-
-    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
-        searchBar.textFiled.resignFirstResponder()
-    }
-
-    func recordHistory(keyword: String) {
-        let model = HistoryModel(keyword: keyword, id: UUID().uuidString, date: Date())
-        let storage = CodableStorage()
-        do {
-            var history: [HistoryModel] = try storage.fetch(for: kStore_History_Key)
-            history.removeAll {
-                $0.keyword == keyword
-            }
-            history.insert(model, at: 0)
-            try storage.save(history, for: kStore_History_Key)
-        } catch {
-            let history: [HistoryModel] = [model]
-            try? storage.save(history, for: kStore_History_Key)
-        }
-    }
-}

+ 0 - 93
TSLiveWallpaper/Business/TSMusic/Search/ViewModel/SearchViewModel.swift

@@ -1,93 +0,0 @@
-//
-//  SearchViewModel.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-
-import Alamofire
-import Foundation
-
-struct RelateMode: Codable {
-    var keyword: String = ""
-    var relateItems: [String] = []
-}
-
-class SearchViewModel: NSObject {
-    @Published var relateModel: RelateMode?
-
-    var keyword: String = "" {
-        didSet {
-            requestAssociateRelate()
-        }
-    }
-
-    var task: URLSessionTask?
-
-    func requestAssociateRelate() {
-        if keyword.isEmpty {
-            return
-        }
-
-        task?.cancel()
-
-        let param = ["ds": "yt",
-                     "hl": "en",
-                     "client": "firefox",
-                     "q": keyword,
-        ]
-
-        task = AF.request("http://suggestqueries.google.com/complete/search", method: .get, parameters: param, encoding: URLEncoding.default).responseData { response in
-            switch response.result {
-            case let .success(data):
-                var model = RelateMode()
-                if let objc: [Any] = data.toJSON() as? [Any] {
-                    if let keyword = objc.first as? String {
-                        model.keyword = keyword
-                    }
-                    if let relates = objc[1] as? [String] {
-                        model.relateItems = relates
-                    }
-                }
-                self.relateModel = model
-                break
-            case let .failure(failure):
-                break
-            }
-        }.task
-    }
-}
-
-extension SearchViewModel: UITableViewDataSource {
-    func numberOfSections(in tableView: UITableView) -> Int {
-        return 1
-    }
-
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return relateModel?.relateItems.count ?? 0
-    }
-
-    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-        if let cell = tableView.dequeueReusableCell(withIdentifier: "RelateSeachCell", for: indexPath) as? RelateSeachCell {
-            if let model = relateModel {
-                if indexPath.row < model.relateItems.count {
-                    let keyword = model.relateItems[indexPath.row]
-                    cell.keywordLabel.text = keyword
-                }
-            }
-            return cell
-        }
-        return RelateSeachCell()
-    }
-}
-
-extension Data {
-    func toJSON() -> AnyObject? {
-        do {
-            return try JSONSerialization.jsonObject(with: self, options: .mutableContainers) as AnyObject
-        } catch {
-            print(error)
-        }
-        return nil
-    }
-}

+ 0 - 9
TSLiveWallpaper/Business/TSMusic/SearchResult/BaseDataModel.swift

@@ -1,9 +0,0 @@
-//
-//  BaseDataModel.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-
-import Foundation
-

+ 0 - 109
TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultStateView.swift

@@ -1,109 +0,0 @@
-//
-//  SearchResultStateView.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-
-import Foundation
-import UIKit
-
-protocol PageStatePlaceHolder {
-    var placeHolderImageName: String? { get }
-    var placeHolderMessage: String? { get }
-}
-
-enum PagePlaceholderType: PageStatePlaceHolder {
-    case empty
-    case nonet
-    case noMusic
-    case noDownload
-    
-    var placeHolderImageName: String? {
-        switch self {
-        case .noMusic, .noDownload:
-            return "ic_empty"
-        case .nonet:
-            return "ic_empty"
-        default:
-            return nil
-        }
-    }
-    
-    var placeHolderMessage: String? {
-        switch self {
-        case .noMusic, .noDownload:
-            return "No Music".localized()
-        case .nonet:
-            return "Network error, please check.".localized()
-        default:
-            return "No Data".localized()
-        }
-    }
-}
-
-
-class SearchResultStateView: UIView {
-    var state: PagePlaceholderType = .empty {
-        didSet {
-            iconView.image = UIImage(named: state.placeHolderImageName ?? "")
-            titleLabel.text = state.placeHolderMessage
-            reloadButton.isHidden = (state != .nonet)
-        }
-    }
-
-    lazy var iconView: UIImageView = .init(image: UIImage(named: "ic_empty"))
-    lazy var titleLabel: UILabel = {
-        let lab = UILabel()
-        lab.font = .systemFont(ofSize: 14)
-        lab.textColor = .white
-        return lab
-    }()
-
-    lazy var reloadButton: UIButton = {
-        let btn = UIButton()
-        btn.setTitle("Reload".localized(), for: .normal)
-        btn.setTitleColor(.white, for: .normal)
-        btn.titleLabel?.font = .systemFont(ofSize: 14)
-        btn.customCornerRadius = 20
-        btn.backgroundColor = .hexColor("#6EF4F4")
-        return btn
-    }()
-
-    override init(frame: CGRect) {
-        super.init(frame: frame)
-        backgroundColor = .hexColor("#222222")
-        addChildren()
-        makeConstraints()
-    }
-
-    required init?(coder: NSCoder) {
-        fatalError("init(coder:) has not been implemented")
-    }
-
-    func addChildren() {
-        addSubview(iconView)
-        addSubview(titleLabel)
-        addSubview(reloadButton)
-    }
-
-    func makeConstraints() {
-        iconView.snp.makeConstraints { make in
-            make.center.equalToSuperview()
-        }
-        titleLabel.snp.makeConstraints { make in
-            make.top.equalTo(iconView.snp.bottom).offset(12)
-            make.centerX.equalToSuperview()
-        }
-        reloadButton.snp.makeConstraints { make in
-            make.centerX.equalToSuperview()
-            make.top.equalTo(titleLabel.snp.bottom).offset(20)
-            make.width.equalTo(80)
-            make.height.equalTo(40)
-        }
-    }
-    
-    override func layoutSubviews() {
-        super.layoutSubviews()
-    }
-}

+ 0 - 311
TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultViewController.swift

@@ -1,311 +0,0 @@
-//
-//  SearchResultViewController.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-//import ADManager
-import Combine
-import Foundation
-import GoogleMobileAds
-import Kingfisher
-import MJRefresh
-import TSVideoKit
-import UIKit
-
-class SearchResultViewController: LWBGViewController {
-    var viewModel: SearchResultViewModel = .init()
-    private var cancellables = [AnyCancellable]()
-
-    lazy var listView: UITableView = {
-        let tabView = UITableView()
-        tabView.dataSource = viewModel
-        tabView.delegate = self
-        tabView.mj_header = defaultHeadr
-        tabView.mj_footer = defaultFooter
-        tabView.separatorStyle = .none
-        tabView.register(SongDownloadCell.self, forCellReuseIdentifier: "SongDownloadCell")
-        tabView.backgroundColor = .clear
-        return tabView
-    }()
-
-    var defaultHeadr: MJRefreshNormalHeader {
-        let header = MJRefreshNormalHeader { [weak self] in
-            self?.viewModel.reloadData()
-        }
-        header.lastUpdatedTimeLabel?.isHidden = true
-        header.stateLabel?.isHidden = true
-        header.setTitle("", for: .idle)
-        header.loadingView?.color = .white
-        return header
-    }
-
-    var defaultFooter: MJRefreshAutoNormalFooter {
-        let footer = MJRefreshAutoNormalFooter { [weak self] in
-            self?.viewModel.loadMoreData()
-        }
-        footer.loadingView?.color = .white
-        footer.isRefreshingTitleHidden = true
-        footer.setTitle("", for: .idle)
-        return footer
-    }
-
-    lazy var loadingView: CWLoadingView = .init()
-
-    lazy var stateView: SearchResultStateView = SearchResultStateView()
-
-    lazy var searchBar: CWSearchTextBar = {
-        let bar = CWSearchTextBar()
-        bar.textFiled.delegate = self
-        bar.customCornerRadius = 8
-        return bar
-    }()
-
-    lazy var searchButton: UIButton = {
-        let btn = UIButton()
-        btn.setTitle("Search".localized(), for: .normal)
-        btn.setTitleColor(.white, for: .normal)
-        btn.titleLabel?.font = .systemFont(ofSize: 14)
-        btn.addTarget(self, action: #selector(researchKeyword), for: .touchUpInside)
-        return btn
-    }()
-
-    lazy var backButton: UIButton = {
-        let btn = UIButton()
-        btn.setImage(.naviBackWhite, for: .normal)
-        btn.addTarget(self, action: #selector(popupCurrentVc), for: .touchUpInside)
-        return btn
-    }()
-
-    override func viewDidLoad() {
-        super.viewDidLoad()
-        bgImageView.image = .viewMainBg
-        view.backgroundColor = .hexColor("#121325")
-        addChildren()
-        makeConstraints()
-        addNotifaction()
-        loadData()
-    }
-
-    override func viewWillAppear(_ animated: Bool) {
-        super.viewWillAppear(animated)
-        PlayerManager.shared.miniBar.isHidden = false
-        PlayerManager.shared.rootVc?.moveDownMiniBar()
-    }
-
-    override func viewWillDisappear(_ animated: Bool) {
-        super.viewWillDisappear(animated)
-    }
-
-    override func addNotifaction() {
-        super.addNotifaction()
-        viewModel.$datas.receive(on: DispatchQueue.main).sink { [weak self] _ in
-            self?.listView.reloadData()
-            self?.endRefreshing()
-        }.store(in: &cancellables)
-
-        viewModel.$loadState.receive(on: DispatchQueue.main).sink { [weak self] states in
-
-            switch states {
-            case .loading:
-                self?.loadingView.isHidden = false
-                self?.listView.scrollToTop()
-                break
-            case .fail:
-                self?.stateView.state = .nonet
-                self?.stateView.isHidden = false
-                self?.loadingView.isHidden = true
-            case .empty:
-                self?.stateView.state = .noMusic
-                self?.stateView.isHidden = false
-                self?.loadingView.isHidden = true
-            default:
-                self?.stateView.isHidden = true
-                self?.loadingView.isHidden = true
-            }
-
-        }.store(in: &cancellables)
-
-        NotificationCenter.default.addObserver(self, selector: #selector(reloadData), name: kDataChangedNotifactionName, object: nil)
-    }
-
-    @objc func researchKeyword() {
-        if searchBar.textFiled.text?.isEmpty == true {
-            return
-        }
-        searchBar.textFiled.resignFirstResponder()
-        viewModel.searchModel = .init(query: searchBar.textFiled.text ?? "")
-        recordHistory(keyword: searchBar.textFiled.text ?? "")
-        viewModel.requestData()
-    }
-
-    @objc func reloadData() {
-        listView.reloadData()
-    }
-
-    func endRefreshing() {
-        listView.mj_header?.endRefreshing()
-        listView.mj_footer?.endRefreshing()
-    }
-
-    @objc func loadData() {
-        viewModel.requestData()
-    }
-
-    override func addChildren() {
-        super.addChildren()
-        view.addSubview(backButton)
-        view.addSubview(searchBar)
-        view.addSubview(searchButton)
-        searchBar.textFiled.text = viewModel.searchModel.query
-        stateView.reloadButton.addTarget(self, action: #selector(loadData), for: .touchUpInside)
-        stateView.isHidden = true
-        view.addSubview(listView)
-        view.addSubview(stateView)
-        view.addSubview(loadingView)
-    }
-
-    func makeConstraints() {
-        backButton.snp.makeConstraints { make in
-            make.width.height.equalTo(40)
-            make.leading.equalToSuperview().offset(8)
-            make.top.equalTo(view.safeAreaLayoutGuide.snp.top)
-        }
-
-        searchBar.snp.makeConstraints { make in
-            make.leading.equalTo(backButton.snp.trailing)
-            make.trailing.equalTo(searchButton.snp.leading).offset(-8)
-            make.height.equalTo(40)
-            make.centerY.equalTo(backButton)
-        }
-
-        searchButton.sizeToFit()
-        searchButton.snp.makeConstraints { make in
-            make.trailing.equalToSuperview().offset(-16)
-            make.centerY.equalTo(searchBar)
-            make.height.equalTo(40)
-            make.width.equalTo(searchButton.width)
-        }
-
-        listView.snp.makeConstraints { make in
-            make.bottom.equalTo(view.safeAreaLayoutGuide.snp.bottom).offset(-68)
-            make.leading.trailing.equalToSuperview()
-            make.top.equalTo(searchBar.snp.bottom)
-        }
-
-        stateView.snp.makeConstraints { make in
-            make.edges.equalTo(listView)
-        }
-
-        loadingView.snp.makeConstraints { make in
-            make.edges.equalTo(listView)
-        }
-    }
-
-    deinit {
-        NotificationCenter.default.removeObserver(self)
-        cancellables.removeAll()
-    }
-}
-
-extension SearchResultViewController: UITableViewDelegate, UIScrollViewDelegate, UITextFieldDelegate {
-    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-        if indexPath.row >= viewModel.datas.count {
-            return
-        }
-
-        let vModel = viewModel.datas[indexPath.row]
-        if let video = vModel.dataModel {
-            let datas = viewModel.datas.compactMap {
-                $0.dataModel
-            }
-            PlayerManager.shared.playVideo(onlineVideo: video, recommendDatas: datas, scene: .online)
-        }
-        searchBar.textFiled.resignFirstResponder()
-    }
-
-    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
-        guard let cell = cell as? SongDownloadCell else {
-            return
-        }
-
-        let viewModel = viewModel.datas[indexPath.row]
-        let videoModel = viewModel.dataModel
-        cell.bindViewModel(viewModel: viewModel, isOnline: true)
-        cell.downloadStateChangeBlock = { [weak self] state in
-            guard let self = self else {
-                return
-            }
-            switch state {
-            case .idle(isAnimate: false), .idle(isAnimate: true):
-                if PurchaseManager.default.isVip {
-                    viewModel.startDownload()
-                } else {
-                    let loading = ADLoadingViewController()
-                    loading.adScene = .downloadReward
-                    loading.finishedHandler = { finished in
-                        if finished {
-                            viewModel.startDownload()
-                        }
-                    }
-                    present(loading, animated: false)
-                }
-                break
-            case .pause:
-                viewModel.resumeDownload()
-                break
-            case .done:
-                if let videoId = videoModel?.videoId {
-                    self.viewModel.showOperationViewController(videoId: videoId)
-                }
-                break
-            case .downloading:
-                viewModel.pauseDownload()
-                break
-            case .retry:
-                viewModel.retryDownload()
-                break
-            case .loading:
-                break
-            }
-        }
-    }
-
-    func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
-        searchBar.textFiled.resignFirstResponder()
-    }
-
-    func textFieldDidBeginEditing(_ textField: UITextField) {
-//        ADManager.shared.showAd(scene: ADScene.search, from: self) { state in
-//            if state == .fail || state == .finished {
-        textField.becomeFirstResponder()
-//            }
-//        }
-    }
-
-    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
-        if textField.text?.isEmpty == false {
-            viewModel.searchModel = .init(query: textField.text ?? "")
-            recordHistory(keyword: textField.text ?? "")
-            viewModel.requestData()
-            textField.resignFirstResponder()
-        }
-        return true
-    }
-
-    func recordHistory(keyword: String) {
-        let model = HistoryModel(keyword: keyword, id: UUID().uuidString, date: Date())
-        let storage = CodableStorage()
-        do {
-            var history: [HistoryModel] = try storage.fetch(for: kStore_History_Key)
-            history.removeAll {
-                $0.keyword == keyword
-            }
-            history.insert(model, at: 0)
-            try storage.save(history, for: kStore_History_Key)
-        } catch {
-            let history: [HistoryModel] = [model]
-            try? storage.save(history, for: kStore_History_Key)
-        }
-    }
-}

+ 0 - 153
TSLiveWallpaper/Business/TSMusic/SearchResult/SearchResultViewModel.swift

@@ -1,153 +0,0 @@
-//
-//  SearchResultViewModel.swift
-//  ColorfulWallpaper
-//
-//  Created by nkl on 2024/9/11.
-//
-
-import Alamofire
-import CoreData
-import Foundation
-import KLExtension
-import SwiftUI
-import TSVideoKit
-
-enum SearchType: String {
-    case video = "v"
-    case channel = "c"
-    case playlist = "p"
-}
-
-struct SearchModel {
-    var query: String
-    var type: SearchType = .video
-    var next: String = ""
-}
-
-enum CWLoadState {
-    case idle
-    case loading
-    case reloading
-    case fail
-    case loadingMore
-    case success
-    case empty
-}
-
-class SearchResultViewModel: NSObject {
-    var keyword: String = ""
-
-    /// 加载状态
-    @Published var loadState: CWLoadState = .idle
-
-    /// 数据源组
-//    @Published var datas: [VideoListDetailData] = []
-    @Published var datas: [SongDownloadCellViewModel] = []
-
-    /// 是否需要刷新页面
-    @Published var needReload: Bool = false
-
-    /// 搜索模型
-    var searchModel: SearchModel = .init(query: "")
-
-    var hasNextPage: Bool {
-        let hasNext = !searchModel.next.isEmpty
-        return hasNext
-    }
-    
-    override init() {
-        super.init()
-        
-        NotificationCenter.default.addObserver(self, selector: #selector(retryAudio(notify:)), name: kSingleVideoFailNotifactionName, object: nil)
-    }
-    
-    @objc func retryAudio(notify:Notification) {
-        if let videoId = notify.object as? String {
-            if let viewModel = datas.first(where: {
-                $0.downloader?.groupId == videoId
-            }) {
-                viewModel.retryDownload(isAudio: true)
-            }
-        }
-    }
-
-    /// 初始加载
-    func requestData() {
-        loadState = .loading
-        loadData()
-    }
-
-    /// 下啦刷新
-    func reloadData() {
-        loadState = .reloading
-        searchModel.next = ""
-        loadData()
-    }
-
-    /// 上啦加载
-    func loadMoreData() {
-        loadState = .loadingMore
-        loadData()
-    }
-
-    deinit {
-        NotificationCenter.default.removeObserver(self)
-    }
-}
-
-extension SearchResultViewModel {
-    func loadData() {
-        TSApiManager.shared.ts_searchVideo(keyword: searchModel.query, requestId: prase_search_key, next: searchModel.next) { result, next in
-            switch result {
-            case let .success(modes):
-                /// 下拉刷新覆盖 || 初次加载
-                if self.loadState == .reloading ||
-                    self.loadState == .loading {
-                    self.datas = modes.map({
-                        SongDownloadCellViewModel(dataModel: $0, video: nil)
-                    })
-                } else {
-                    /// 其他新增
-                    self.datas.append(contentsOf: modes.map({
-                        SongDownloadCellViewModel(dataModel: $0, video: nil)
-                    }))
-                }
-                self.searchModel.next = next
-                if self.datas.isEmpty {
-                    self.loadState = .empty
-                } else {
-                    self.loadState = .success
-                }
-
-            case let .failure(error):
-                if self.datas.isEmpty {
-                    self.loadState = .fail
-                }
-                print("error")
-            }
-        }
-    }
-}
-
-extension SearchResultViewModel: UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        datas.count
-    }
-
-    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-        if let cell = tableView.dequeueReusableCell(withIdentifier: "SongDownloadCell") as? SongDownloadCell {
-            return cell
-        }
-        return SongDownloadCell()
-    }
-
-    func showOperationViewController(videoId: String) {
-        if let video = TSVideoOperator.shared.dataManager.fetchVideo(videoId: videoId) {
-            let vc = CWOperateViewController()
-            vc.modalPresentationStyle = .overFullScreen
-            vc.operteItem = video
-            PlayerManager.shared.rootVc?.present(vc, animated: true)
-        }
-     
-    }
-}

+ 0 - 70
TSLiveWallpaper/LaunchVC/TSLaunchVC.swift

@@ -5,9 +5,7 @@
 //  Created by 100Years on 2024/12/20.
 //
 
-import ADManager
 import Alamofire
-import GoogleMobileAds
 import TSVideoKit
 import UIKit
 import AppTrackingTransparency
@@ -34,54 +32,9 @@ class TSLaunchVC: UIViewController {
         super.viewDidLoad()
         setupLaunchScreenView()
         startTimer()
-        addNotifiy()
     }
 
-    func addNotifiy() {
-        TSNetworkShard.startListenNetStatus { status, manager in
-            switch status {
-            case .reachable:
-                /// 一旦有网直接重新拉取配置
-                TSVideoOperator.shared.fetchConfiguration()
-                if !PurchaseManager.default.isVip {
-                    ADManager.shared.showLaunchAd(scene: ADScene.launch, in: self)
-                }
-                PurchaseManager.default.requestProducts()
-                self.initUmpProtocal()
-                manager?.stopListening()
-            default:
-                break
-            }
-        }
-    }
 
-    /// 欧盟
-    func initUmpProtocal() {
-        if AppConfig.isEURegion && ATTrackingManager.trackingAuthorizationStatus == .authorized {
-            /// 请求弹窗
-            pauseTimer()
-            GoogleMobileAdsConsentManager.shared.gatherConsent(from: self) { _ in
-                self.continueTimer()
-                if GoogleMobileAdsConsentManager.shared.canRequestAds {
-                    self.initAdMob()
-                }
-            }
-            /// 这步优先执行,然后等回调回来是做更新的
-            initAdMob()
-        } else {
-            initAdMob()
-        }
-    }
-
-    func initAdMob() {
-        GADMobileAds.sharedInstance().start { status in
-            print("启动状态 == status === \(status.adapterStatusesByClassName)")
-        }
-        GADMobileAds.sharedInstance().audioVideoManager.audioSessionIsApplicationManaged = true
-        ADManager.shared.isForbittenRegion = false
-        ADManager.shared.isVipUser = PurchaseManager.default.isVip
-        ADManager.shared.prepareAd(scenes: ADScene.prepareScenes)
-    }
 
     func enterApp() {
         DispatchQueue.main.async {
@@ -144,26 +97,3 @@ class TSLaunchVC: UIViewController {
         view.addSubview(launchView)
     }
 }
-
-extension TSLaunchVC: ADManagerLaunchDelegate {
-    func adWillPresent(_ manager: ADManager) {
-        // 暂停计时
-        pauseTimer()
-    }
-
-    func adDidDismiss(_ manager: ADManager) {
-        // 关闭广告,继续计时后关闭开屏页
-        continueTimer()
-    }
-
-    func adDidFailToPresent(_ manager: ADManager) {
-    }
-
-    private func pauseTimer() {
-        timer?.suspend()
-    }
-
-    private func continueTimer() {
-        timer?.resume()
-    }
-}