323 lines
11 KiB
Swift
323 lines
11 KiB
Swift
//
|
||
// WA_LIVEVC.swift
|
||
// wallpaper_project
|
||
|
||
|
||
import UIKit
|
||
import JXSegmentedView
|
||
import MJRefresh
|
||
import FirebaseAnalytics
|
||
import AppLovinSDK
|
||
import Alamofire
|
||
import FirebaseRemoteConfig
|
||
import MTGSDKNewInterstitial
|
||
import MTGSDKBidding
|
||
import MTGSDK
|
||
import AnyThinkInterstitial
|
||
|
||
class WA_LIVEVC: WA_RootVC {
|
||
|
||
|
||
@IBOutlet weak var collectionView: UICollectionView!
|
||
|
||
var wallpapers = [WA_3DModel]()
|
||
|
||
var currentPage: Int = 1 // 当前页数
|
||
let pageSize: Int = 10 // 每页加载的数量
|
||
var isback:Bool = false
|
||
// 顶部刷新
|
||
let header = MJRefreshNormalHeader()
|
||
// 底部刷新
|
||
let footer = MJRefreshAutoNormalFooter()
|
||
|
||
|
||
var interstitialAd: MAInterstitialAd!
|
||
var retryAttempt = 0.0
|
||
|
||
|
||
var remoteConfig: RemoteConfig!
|
||
|
||
var isadshow:Bool = false
|
||
var bidToken:String?
|
||
var newInterstitialAdManager:MTGNewInterstitialBidAdManager?
|
||
|
||
override func viewDidLoad() {
|
||
super.viewDidLoad()
|
||
// self.createInterstitialAd()
|
||
self.view.backgroundColor = .white
|
||
setCollectionView()
|
||
|
||
Analytics.logEvent("in_live", parameters: nil)
|
||
setRefresh()
|
||
}
|
||
|
||
|
||
@IBAction func back(_ sender: Any) {
|
||
isback = true
|
||
if self.isadshow == true{
|
||
if ATAdManager.shared().interstitialReady(forPlacementID: "n66bdc1be5c449"){
|
||
ATAdManager.shared().showInterstitial(withPlacementID: "n66bdc1be5c449", in: self, delegate: self)
|
||
StartManager.shared.shelfNumber = "动态页面壁纸show"
|
||
setPostSHOW()
|
||
}else{
|
||
self.navigationController?.popViewController(animated: true)
|
||
}
|
||
|
||
}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()
|
||
}
|
||
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")
|
||
|
||
}
|
||
|
||
// 下拉刷新
|
||
@objc func refreshData() {
|
||
currentPage = 1
|
||
setJsondata()
|
||
}
|
||
|
||
// 上拉加载更多
|
||
@objc func loadMoreData() {
|
||
currentPage += 1
|
||
setJsondata()
|
||
}
|
||
|
||
func setJsondata(){
|
||
// 读取 JSON 文件并解析
|
||
if let path = Bundle.main.path(forResource: "live", 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.")
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
override func viewWillAppear(_ animated: Bool) {
|
||
super.viewWillAppear(animated)
|
||
navigationController?.navigationBar.isHidden = true
|
||
// 初始化 Remote Config
|
||
remoteConfig = RemoteConfig.remoteConfig()
|
||
|
||
|
||
|
||
// 设置最小获取间隔(开发期间可以设置较小的值)
|
||
let settings = RemoteConfigSettings()
|
||
settings.minimumFetchInterval = 0
|
||
remoteConfig.configSettings = settings
|
||
// Fetch 配置值
|
||
remoteConfig.setDefaults(fromPlist: "isopen")
|
||
// Fetch 配置值
|
||
// fetchRemoteConfig()
|
||
|
||
loadTopAD()
|
||
}
|
||
|
||
func loadTopAD(){
|
||
let extra: [String: Any] = [
|
||
kATAdLoadingExtraMediaExtraKey: "custom_values"
|
||
]
|
||
ATAdManager.shared().loadAD(withPlacementID: "n66bdc1be5c449", extra: extra, delegate: self)
|
||
self.fetchRemoteConfig()
|
||
|
||
}
|
||
|
||
///是否有广告
|
||
func fetchRemoteConfig() {
|
||
let localVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "0.0"
|
||
remoteConfig.fetch{ (status, error) -> Void in
|
||
if status == .success {
|
||
print("Config fetched!")
|
||
self.remoteConfig.activate { changed, error in
|
||
if error == nil{
|
||
let js = self.remoteConfig.configValue(forKey: "isopen").jsonValue as! [String:Any]
|
||
let valueopen = js["isadopen"] as! Bool
|
||
let valueversion = js["version"] as! String
|
||
DispatchQueue.main.async {
|
||
if valueversion == localVersion{
|
||
self.isadshow = false
|
||
}else{
|
||
if valueopen {
|
||
self.isadshow = true
|
||
} else {
|
||
self.isadshow = false
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
} else {
|
||
print("Config not fetched")
|
||
if let error = error {
|
||
print("Error: \(error.localizedDescription)")
|
||
}
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
extension WA_LIVEVC:UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout{
|
||
|
||
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
|
||
|
||
|
||
return self.wallpapers.count
|
||
}
|
||
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
|
||
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "WA_WallpaperCollectionCell", for: indexPath)as!WA_WallpaperCollectionCell
|
||
cell.model = self.wallpapers[indexPath.row]
|
||
return cell
|
||
}
|
||
|
||
|
||
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
||
let vc = WA_LiveVideoVC()
|
||
vc.model = self.wallpapers[indexPath.row]
|
||
navigationController?.pushViewController(vc, animated: true)
|
||
|
||
}
|
||
}
|
||
|
||
|
||
extension WA_LIVEVC:ATInterstitialDelegate{
|
||
// 插页广告展示成功
|
||
func interstitialDidShow(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
|
||
|
||
print("----成功")
|
||
}
|
||
/// 插页广告被点击
|
||
func interstitialDidClick(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
|
||
print("----点击")
|
||
}
|
||
// 插页广告已关闭
|
||
func interstitialDidClose(forPlacementID placementID: String, extra: [AnyHashable : Any]) {
|
||
print("----关闭")
|
||
// WA_TabbarCommon.TabBarController()
|
||
self.navigationController?.popViewController(animated: true)
|
||
|
||
}
|
||
|
||
func didFinishLoadingAD(withPlacementID placementID: String!) {
|
||
print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(placementID)")
|
||
}
|
||
|
||
// load失败
|
||
func didFailToLoadAD(withPlacementID placementID: String!, error: (any Error)!) {
|
||
print("----load失败")
|
||
print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(String(describing: placementID))---error\(String(describing: error))")
|
||
|
||
}
|
||
// 完成加载广告
|
||
func didFinishLoadingADSource(withPlacementID placementID: String!,extra: [AnyHashable : Any]?) {
|
||
|
||
let networkID = extra?["network_firm_id"]
|
||
|
||
let ecpm = extra?["adsource_price"]
|
||
|
||
let country = extra?["country"]
|
||
|
||
|
||
if let adsourcePriceString = extra?["adsource_price"] as? String,
|
||
let adsourcePrice = Double(adsourcePriceString) {
|
||
StartManager.shared.ecpm = Float(adsourcePrice) / 1000
|
||
print("-----ecpm ID: \(StartManager.shared.ecpm)")
|
||
} else {
|
||
print("无法获取 adsource_price 或类型不匹配")
|
||
}
|
||
|
||
StartManager.shared.countryCode = country as? String
|
||
StartManager.shared.network = network(networkID as! Int)
|
||
StartManager.shared.shelfNumber = "动态页面壁纸load"
|
||
StartManager.shared.adId = "n66bdc1be5c449"
|
||
setPostload()
|
||
|
||
|
||
|
||
|
||
|
||
print("ATInterstitialViewController::didFailToLoadADWithPlacementID:\(placementID)")
|
||
|
||
}
|
||
}
|