// // WA_player4kVC.swift // wallpaper_project // // Created by 忆海16 on 2024/7/19. // import UIKit import JXSegmentedView import MJExtension import MJRefresh import FirebaseAnalytics import AppLovinSDK import Alamofire import FirebaseRemoteConfig import MTGSDKNewInterstitial import MTGSDKBidding import MTGSDK class WA_player4kVC: WA_RootVC { @IBOutlet weak var collectionView: UICollectionView! @IBOutlet weak var nameLabel: UILabel! var wallpapers = [WA_3DModel]() var currentPage: Int = 1 // 当前页数 let pageSize: Int = 10 // 每页加载的数量 var interstitialAd: MAInterstitialAd! var retryAttempt = 0.0 // 顶部刷新 let header = MJRefreshNormalHeader() // 底部刷新 let footer = MJRefreshAutoNormalFooter() // var MKArr = [WallpaperModel]() // 存储不同类型的壁纸数组 var newestWallpapers: [WallpaperData] = [] var popularWallpapers: [WallpaperData] = [] var FlowersWallpapers: [WallpaperData] = [] var SuperheroesWallpapers: [WallpaperData] = [] var ChristmasWallpapers: [WallpaperData] = [] var remoteConfig: RemoteConfig! var isadshow:Bool = false var bidToken:String? var newInterstitialAdManager:MTGNewInterstitialBidAdManager? var type:Int = 0 var adCheckTimer: Timer? var adCheckStartTime: Date? var adLoadTime: Int = 0 override func viewDidLoad() { super.viewDidLoad() let param = MTGBiddingRequestParameter(placementId: "1636950", unitId: "3501963", basePrice: nil) MTGBiddingRequest.getBidWith(param) { bidResponse in if bidResponse.success{ self.bidToken = bidResponse.bidToken bidResponse.notifyWin() self.newInterstitialAdManager = MTGNewInterstitialBidAdManager(placementId: "1636950", unitId: "3501963", delegate: self) StartManager.shared.ecpm = Float(bidResponse.price) self.newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!) self.startAdCheck() }else{ self.navigationController?.popViewController(animated: true) } } // self.createInterstitialAd() Analytics.logEvent("in_4k", parameters: nil) self.view.backgroundColor = .white setCollectionView() setRefresh() if StartManager.shared.superHero == true{ // return dataimag.count // cell.typeImagV.image = UIImage(named: "\(self.dataimag[indexPath.row])") if self.type == 1{ self.nameLabel.text = "4K" // self.wallpapers.count }else if type == 2{ self.nameLabel.text = "Newest" }else if type == 3{ self.nameLabel.text = "Popular Wallpapers" }else if type == 4{ self.nameLabel.text = "Superheroes" }else if type == 5{ self.nameLabel.text = "Christmas Wallpapers" }else{ self.nameLabel.text = "Flowers" } }else{ // return dataimaghero.count // cell.typeImagV.image = UIImage(named: "\(self.dataimaghero[indexPath.row])") if self.type == 1{ self.nameLabel.text = "4K" // self.wallpapers.count }else if type == 2{ self.nameLabel.text = "Newest" }else if type == 3{ self.nameLabel.text = "Popular Wallpapers" }else if type == 4{ self.nameLabel.text = "Christmas Wallpapers" }else{ self.nameLabel.text = "Flowers" } } } @IBAction func backbtn(_ sender: Any) { let issureready = newInterstitialAdManager?.isAdReady() if ((issureready) != nil) { newInterstitialAdManager?.show(from: self) self.setPostSHOW() }else{ self.navigationController?.popViewController(animated: true) } } @objc func setRefresh(){ refreshData() header.setRefreshingTarget(self, refreshingAction: #selector(WA_LIVEVC.setRefresh)) // 现在的版本要用mj_header header.setTitle("pull-to-refresh", for: .idle) header.setTitle("Release updates", for: .pulling) header.setTitle("Refreshing...", for: .refreshing) self.collectionView.mj_header = header // 上拉刷新 footer.setRefreshingTarget(self, refreshingAction: #selector(WA_LIVEVC.loadMoreData)) footer.setTitle("Pull up loading", for: .idle) footer.setTitle("Release Load", for: .pulling) footer.setTitle("Loading...", for: .refreshing) self.collectionView.mj_footer = footer header.beginRefreshing() // footer.beginRefreshing() } // 下拉刷新 @objc func refreshData() { currentPage = 1 setJsondata() settypeNetwork() } // 上拉加载更多 @objc func loadMoreData() { currentPage += 1 setJsondata() settypeNetwork() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) navigationController?.navigationBar.isHidden = true } // /定时加载 func startAdCheck() { adCheckStartTime = Date() adCheckTimer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(checkAdStatus), userInfo: nil, repeats: true) } @objc func checkAdStatus() { let elapsedTime = Date().timeIntervalSince(adCheckStartTime!) let elapsedTimeInMilliseconds = Int(elapsedTime * 1000) let issureready = newInterstitialAdManager!.isAdReady() if issureready { self.newInterstitialAdManager?.show(from: self) self.setPostSHOW() } else if elapsedTimeInMilliseconds >= 10000 { // 10000 毫秒 = 10 秒 adCheckTimer?.invalidate() self.navigationController?.popViewController(animated: true) } else { print("广告未准备好,继续检查...") } } func setCollectionView(){ collectionView.delegate = self collectionView.dataSource = self // 设置 collection view 的布局 let layout = CustomCollectionViewFlowLayout() collectionView.collectionViewLayout = layout layout.scrollDirection = .vertical collectionView.register(UINib(nibName: "WA_WallpaperCollectionCell", bundle: nil), forCellWithReuseIdentifier: "WA_WallpaperCollectionCell") } func setJsondata(){ // 读取 JSON 文件并解析 if let path = Bundle.main.path(forResource: "4k", ofType: "json") { do { let data = try Data(contentsOf: URL(fileURLWithPath: path), options: .mappedIfSafe) // 使用 MJExtension 解析 JSON 数据 let jsonArray = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as? [[String: Any]] if let jsonArray = jsonArray { // 使用 MJExtension 将 JSON 数组转换为模型数组 let wallpapersarr = (WA_3DModel.mj_objectArray(withKeyValuesArray: jsonArray) as? [WA_3DModel])! if currentPage == 1 { // 只取前10条数据 let firstTenWallpapers = Array(wallpapersarr.prefix(10)) self.wallpapers = firstTenWallpapers collectionView.reloadData() collectionView.mj_header?.endRefreshing() } else { // 上拉加载更多 let startIndex = currentPage * pageSize let moreWallpapers = Array(wallpapersarr.prefix(startIndex)) DispatchQueue.main.asyncAfter(deadline: .now() + 1.5){ self.wallpapers = moreWallpapers self.collectionView.reloadData() self.collectionView.mj_footer?.endRefreshing() } } } } catch { print("Error reading JSON file:", error.localizedDescription) } } else { print("JSON file not found.") } } func settypeNetwork(){ // 读取 JSON 文件路径 guard let jsonFilePath = Bundle.main.path(forResource: "my_wallpaper", ofType: "json") else { fatalError("Unable to locate my_wallpaper.json file.") } // 读取 JSON 数据 do { // 读取 JSON 数据 let jsonData = try Data(contentsOf: URL(fileURLWithPath: jsonFilePath)) // 尝试将 JSON 数据转换为 Swift 对象 let decoder = JSONDecoder() let wallpaperModels = try decoder.decode([WallpaperModel].self, from: jsonData) // 遍历解析后的 WallpaperModel 对象数组 for wallpaperModel in wallpaperModels { // 根据名称将数据放入不同的数组中 switch wallpaperModel.name { case "Newest": newestWallpapers = wallpaperModel.data case "Popular Wallpapers": popularWallpapers = wallpaperModel.data case "Superheroes": SuperheroesWallpapers = wallpaperModel.data case "Christmas Wallpapers": ChristmasWallpapers = wallpaperModel.data case "Flowers": FlowersWallpapers = wallpaperModel.data default: break } } } catch { print("Error reading or parsing JSON file: \(error)") } } func setPostload(){ let url = "http://111.9.47.226:38080/top_selection/save_ad_load_log" let parameters:[String : Any] = [ "deviceId": StartManager.shared.devicID ?? "", "localIp": StartManager.shared.localIP ?? "", "remoteIp": StartManager.shared.publicIP ?? "", "linkId": "", "packageName": "com.wallpapaer.hd.live.app", "gaid": StartManager.shared.idfaid ?? "", "dataId": "", "shelfNumber":"壁纸详情页返回加载", "succeed": StartManager.shared.succeed, "loadTime": "", "adPlatform": StartManager.shared.adPlatform ?? "", "countryCode": StartManager.shared.countryCode ?? "", "adId": StartManager.shared.adId ?? "", "platformResponseTime": StartManager.shared.platformResponseTime ?? "", "getIpResponseTime": StartManager.shared.getIpResponseTime ?? "", "ecpm": StartManager.shared.ecpm ?? "", "dsp": StartManager.shared.dsp ?? "", "network": StartManager.shared.network ?? "", "showStatus": 0, "washParam": true, ] let headers: HTTPHeaders = [ "Content-Type": "application/json" ] NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in switch result { case .success(let data): print("Response:--- \(data)") case .failure(let error): print("Error:--- \(error)") } } } func setPostSHOW(){ let url = "http://111.9.47.226:38080/top_selection/save_ad_show_log" let parameters:[String : Any] = [ "deviceId": StartManager.shared.devicID ?? "", "localIp": StartManager.shared.localIP ?? "", "remoteIp": StartManager.shared.publicIP ?? "", "linkId": "", "packageName": "com.wallpapaer.hd.live.app", "gaid": StartManager.shared.idfaid ?? "", "dataId": "", "shelfNumber":"壁纸详情页返回展示", "succeed": StartManager.shared.succeed, "loadTime": "", "adPlatform": StartManager.shared.adPlatform ?? "", "countryCode": StartManager.shared.countryCode ?? "", "adId": StartManager.shared.adId ?? "", "platformResponseTime": StartManager.shared.platformResponseTime ?? "", "getIpResponseTime": StartManager.shared.getIpResponseTime ?? "", "ecpm": StartManager.shared.ecpm ?? "", "dsp": StartManager.shared.dsp ?? "", "network": StartManager.shared.network ?? "", ] let headers: HTTPHeaders = [ "Content-Type": "application/json" ] NetworkManager.shared.postRequest(url: url, parameters: parameters, headers: headers) { result in switch result { case .success(let data): print("Response:--- \(data)") case .failure(let error): print("Error:--- \(error)") } } } } extension WA_player4kVC:MTGNewInterstitialBidAdDelegate{ // func newInterstitialBidAdShowSuccess(_ adManager: MTGNewInterstitialBidAdManager) { // print("广告展示成功") // } func newInterstitialBidAdResourceLoadSuccess(_ adManager: MTGNewInterstitialBidAdManager) { print("资源加载成功,表示可播放状态") } func newInterstitialBidAdLoadSuccess(_ adManager: MTGNewInterstitialBidAdManager) { print("广告加载成功") StartManager.shared.succeed = true // StartManager.shared.loadTime = self.adLoadTime StartManager.shared.adPlatform = "mbridge" StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode StartManager.shared.adId = "3501963" StartManager.shared.platformResponseTime = 0 // StartManager.shared.ecpm = Float(ad.revenue) StartManager.shared.dsp = "" StartManager.shared.network = "" setPostload() } func newInterstitialBidAdLoadFail(_ error: any Error, adManager: MTGNewInterstitialBidAdManager) { print("-----\(error)") // print(" 广告加载失败") self.navigationController?.popViewController(animated: true) } func newInterstitialBidAdShowSuccess(withBidToken bidToken: String, adManager: MTGNewInterstitialBidAdManager) { print("广告展示成功") } func newInterstitialBidAdShowFail(_ error: any Error, adManager: MTGNewInterstitialBidAdManager) { print("广告展示失败") self.navigationController?.popViewController(animated: true) } func newInterstitialBidAdPlayCompleted(_ adManager: MTGNewInterstitialBidAdManager) { print("广告播放完全播放回调") } func newInterstitialBidAdEndCardShowSuccess(_ adManager: MTGNewInterstitialBidAdManager) { print("视频播放完成后展示结果页") } func newInterstitialBidAdClicked(_ adManager: MTGNewInterstitialBidAdManager) { print("广告被点击") } // 广告被关闭 func newInterstitialBidAdDidClosed(_ adManager: MTGNewInterstitialBidAdManager) { print("广告被关闭") self.navigationController?.popViewController(animated: true) } } extension WA_player4kVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{ func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { if StartManager.shared.superHero == true{ if self.type == 1{ return self.wallpapers.count }else if type == 2{ return self.newestWallpapers.count }else if type == 3{ return self.popularWallpapers.count }else if type == 4{ return self.SuperheroesWallpapers.count }else if type == 5{ return self.ChristmasWallpapers.count }else{ return self.FlowersWallpapers.count } }else{ if self.type == 1{ return self.wallpapers.count }else if type == 2{ return self.newestWallpapers.count }else if type == 3{ return self.popularWallpapers.count }else if type == 4{ return self.ChristmasWallpapers.count }else{ return self.FlowersWallpapers.count } } } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WA_WallpaperCollectionCell", for: indexPath)as!WA_WallpaperCollectionCell if StartManager.shared.superHero == true{ if self.type == 1{ cell.model = self.wallpapers[indexPath.row] }else if type == 2{ let model = self.newestWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else if type == 3{ let model = self.popularWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else if type == 4{ let model = self.SuperheroesWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else if type == 5{ let model = self.ChristmasWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else{ let model = self.FlowersWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } } }else{ if self.type == 1{ cell.model = self.wallpapers[indexPath.row] }else if type == 2{ let model = self.newestWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else if type == 3{ let model = self.popularWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else if type == 4{ let model = self.ChristmasWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } }else{ let model = self.FlowersWallpapers[indexPath.row] if let imageURL = URL(string: model.previewThumb ?? "") { cell.wpImagV.sd_setImage(with: imageURL, placeholderImage: UIImage(named: "Rectangle")) } } } return cell } func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let vc = WA_DetailsVC() vc.type = self.type if StartManager.shared.superHero == true{ if self.type == 1{ vc.model = self.wallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 2{ vc.modeltype = self.newestWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 3{ vc.modeltype = self.popularWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 4{ vc.modeltype = self.SuperheroesWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 5{ vc.modeltype = self.ChristmasWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else{ vc.modeltype = self.FlowersWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) } }else{ if self.type == 1{ vc.model = self.wallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 2{ vc.modeltype = self.newestWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 3{ vc.modeltype = self.popularWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else if type == 4{ vc.modeltype = self.ChristmasWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) }else{ vc.modeltype = self.FlowersWallpapers[indexPath.row] navigationController?.pushViewController(vc, animated: true) } } } }