Wallpaper_Home/wallpaper_project/PlayerVC/C/WA_player4kVC.swift
忆海16 5ff1070967 mtg
2024-07-23 11:44:01 +08:00

588 lines
22 KiB
Swift

//
// 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)
}
}
}
}