Wallpaper_Home/wallpaper_project/Main/WA_limitsVCViewController.swift
2024-07-15 11:54:44 +08:00

584 lines
21 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// WA_limitsVCViewController.swift
// wallpaper_project
//
// Created by 16 on 2024/3/18.
//
import UIKit
import SVProgressHUD
import Photos
import Alamofire
import AppLovinSDK
import FirebaseAnalytics
import FirebaseRemoteConfig
import MTGSDKNewInterstitial
import MTGSDKBidding
import MTGSDK
class WA_limitsVCViewController: WA_RootVC {
@IBOutlet weak var retryBtn: UIButton!
let activityView = UIActivityIndicatorView()
@IBOutlet weak var resourceLabel: UILabel!
var interstitialAd: MAInterstitialAd!
var retryAttempt = 0.0
var adCheckTimer: Timer?
var adCheckStartTime: Date?
var adLoadTime: Int = 0
var idad:String?
var remoteConfig: RemoteConfig!
var failureCount = 0
private var retryTimer: Timer?
private var retryAttempts = 0
private let maxRetryAttempts = 3
private let retryInterval: TimeInterval = 3
// var ivAadManager:MTGNewInterstitialAdManager!
var bidToken:String?
var newInterstitialAdManager:MTGNewInterstitialBidAdManager?
override func viewDidLoad() {
super.viewDidLoad()
requestPhotoLibraryPermission()
// Remote Config
remoteConfig = RemoteConfig.remoteConfig()
//
let settings = RemoteConfigSettings()
settings.minimumFetchInterval = 0
remoteConfig.configSettings = settings
// Fetch
remoteConfig.setDefaults(fromPlist: "isopen")
self.resourceLabel.isHidden = false
activityView.center = CGPoint(x: self.view.center.x + 10, y: self.view.bounds.size.height - 100 )
//
activityView.hidesWhenStopped = true
activityView.color = .black;
activityView.style = UIActivityIndicatorView.Style.whiteLarge
self.view.addSubview(activityView)
self.activityView.startAnimating()
let param = MTGBiddingRequestParameter(placementId: "1638986", unitId: "3504682", basePrice: nil)
MTGBiddingRequest.getBidWith(param) { bidResponse in
if bidResponse.success{
self.bidToken = bidResponse.bidToken
bidResponse.notifyWin()
self.newInterstitialAdManager = MTGNewInterstitialBidAdManager(placementId: "1638986", unitId: "3504682", delegate: self)
self.newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!)
self.fetchRemoteConfig()
}else{
WA_TabbarCommon.TabBarController()
}
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.retryBtn.isHidden = true
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
//
requestTrackingAuthorization { idfa in
if let idfa = idfa {
print("IDFA: \(idfa)")
StartManager.shared.idfaid = idfa
print("Stored IDFA: \(StartManager.shared.idfaid ?? "N/A")")
} else {
print("IDFA is not available or tracking authorization denied.")
}
}
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if UserDefaults.standard.object(forKey: "iswindows") != nil {
if UserDefaults.standard.bool(forKey: "iswindows") {
AppDelegate.shared.showOverlayWindow()
} else {
UserDefaults.standard.set(false, forKey: "iswindows")
}
} else {
UserDefaults.standard.set(false, forKey: "iswindows")
}
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
//
requestTrackingAuthorization { idfa in
if let idfa = idfa {
print("IDFA: \(idfa)")
StartManager.shared.idfaid = idfa
print("Stored IDFA: \(StartManager.shared.idfaid ?? "N/A")")
} else {
print("IDFA is not available or tracking authorization denied.")
}
}
}
}
func fetchRemoteConfig() {
let localVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? "0.0"
print("version ------- \(localVersion)")
remoteConfig.fetch { [weak self] (status, error) in
guard let self = self else { return }
if status == .success {
self.retryAttempts = 0
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 {
WA_TabbarCommon.TabBarController()
StartManager.shared.superHero = false
} else {
if valueopen {
// self.newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!)
self.startAdCheck()
StartManager.shared.superHero = true
} else {
WA_TabbarCommon.TabBarController()
StartManager.shared.superHero = false
}
}
}
}
}
} else {
print("Config not fetched")
if let error = error {
print("Error: \(error.localizedDescription)")
}
self.retryAttempts += 1
if self.retryAttempts <= self.maxRetryAttempts {
//
self.retryTimer?.invalidate()
//
self.retryTimer = Timer.scheduledTimer(withTimeInterval: self.retryInterval, repeats: false) { [weak self] _ in
self?.fetchRemoteConfig()
}
} else {
print("Max retry attempts reached. Stopping retries.")
WA_TabbarCommon.TabBarController()
}
}
}
}
// /
func startAdCheck() {
// createInterstitialAd()
// newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!)
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)
// self.newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!)
let issureready = newInterstitialAdManager!.isAdReady()
if issureready {
// interstitialAd.show()
newInterstitialAdManager?.show(from: self)
Analytics.logEvent("open_load_success", parameters: nil)
adLoadTime = elapsedTimeInMilliseconds //
adCheckTimer?.invalidate()
self.activityView.stopAnimating()
// if StartManager.shared.idfaid == ""{
// self.fetchIDFAUntilSuccess()
// }else{
// self.setPostSHOW()
// }
} else if elapsedTimeInMilliseconds >= 10000 { // 10000 = 10
adCheckTimer?.invalidate()
WA_TabbarCommon.TabBarController()
Analytics.logEvent("open_load_fail", parameters: nil)
self.activityView.stopAnimating()
} else {
print("广告未准备好,继续检查...")
}
}
///
func requestPhotoLibraryPermission() {
//
let status = PHPhotoLibrary.authorizationStatus()
//
switch status {
case .authorized:
// 访
print("相册权限已授权")
case .denied, .restricted:
// 访
print("相册权限已拒绝或受限,请在设置中开启权限")
case .notDetermined:
//
PHPhotoLibrary.requestAuthorization { [weak self] (newStatus) in
DispatchQueue.main.async {
if newStatus == .authorized {
// 访
print("用户已授权访问相册")
} else {
// 访
print("用户未授权访问相册")
}
}
}
@unknown default:
//
print("未知的相册权限状态")
}
}
//
// //
// func stopListeningNetwork() {
// NetworkReachabilityManager.default?.stopListening()
// }
// 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":StartManager.shared.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":StartManager.shared.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)")
// }
// }
//
// }
//
//
// func fetchIDFAUntilSuccess() {
// DispatchQueue.global(qos: .background).async {
// var idfaObtained = false
//
// while !idfaObtained {
// let semaphore = DispatchSemaphore(value: 0)
//
// requestIDFA { idfa in
// if let idfa = idfa {
// print("Got IDFA: \(idfa)")
// // IDFA
// // self.performActionWithIDFA(idfa)
// StartManager.shared.idfaid = idfa
//// self.setPostSHOW()
// idfaObtained = true
// } else {
// print("Failed to get IDFA, retrying...")
// DispatchQueue.global(qos: .background).asyncAfter(deadline: .now() + 1.0) {
// semaphore.signal()
// }
// }
// }
//
// semaphore.wait()
// }
// }
// }
}
extension WA_limitsVCViewController:MTGNewInterstitialBidAdDelegate{
// func newInterstitialBidAdShowSuccess(_ adManager: MTGNewInterstitialBidAdManager) {
// print("广")
// }
func newInterstitialBidAdResourceLoadSuccess(_ adManager: MTGNewInterstitialBidAdManager) {
print("资源加载成功,表示可播放状态")
}
func newInterstitialBidAdLoadSuccess(_ adManager: MTGNewInterstitialBidAdManager) {
print("广告加载成功")
}
func newInterstitialBidAdLoadFail(_ error: any Error, adManager: MTGNewInterstitialBidAdManager) {
print("-----\(error)")
// print(" 广")
}
func newInterstitialBidAdShowSuccess(withBidToken bidToken: String, adManager: MTGNewInterstitialBidAdManager) {
print("广告展示成功")
}
func newInterstitialBidAdShowFail(_ error: any Error, adManager: MTGNewInterstitialBidAdManager) {
print("广告展示失败")
}
func newInterstitialBidAdPlayCompleted(_ adManager: MTGNewInterstitialBidAdManager) {
print("广告播放完全播放回调")
}
func newInterstitialBidAdEndCardShowSuccess(_ adManager: MTGNewInterstitialBidAdManager) {
print("视频播放完成后展示结果页")
}
func newInterstitialBidAdClicked(_ adManager: MTGNewInterstitialBidAdManager) {
print("广告被点击")
}
// 广
func newInterstitialBidAdDidClosed(_ adManager: MTGNewInterstitialBidAdManager) {
// print("广")
WA_TabbarCommon.TabBarController()
}
//
// /**
// * 广
// * @param converted -
// */
// func newInterstitialAdDismissed(withConverted converted: Bool, adManager: MTGNewInterstitialAdManager) {
//// log(NSStringFromSelector(#function))
// }
//
// // 广
// func newInterstitialAdDidClosed(_ adManager: MTGNewInterstitialAdManager) {
//// log(NSStringFromSelector(#function))
// }
//
// /**
// *
// * @param rewardedOrNot
// * @param alertWindowStatus
// *
// */
// func newInterstitialAdRewarded(_ rewardedOrNot: Bool, alertWindowStatus: MTGNIAlertWindowStatus, adManager: MTGNewInterstitialAdManager) {
//// log(NSStringFromSelector(#function))
// }
}
//extension WA_limitsVCViewController: MAAdDelegate
//{
// func createInterstitialAd() {
//
// let randomString = getRandomString()
//
// if StartManager.shared.adId == nil{
// StartManager.shared.adId = randomString ?? "789b377f3ac14010e"
// interstitialAd = MAInterstitialAd(adUnitIdentifier: StartManager.shared.adId!)
// print("adid-----\(StartManager.shared.adId ?? "gggg")")
// }else{
// interstitialAd = MAInterstitialAd(adUnitIdentifier: StartManager.shared.adId!)
// print("adid-----\(StartManager.shared.adId ?? "gggg")")
// }
//
// interstitialAd.delegate = self
// self.idad = randomString
//
// // Load the first ad
// interstitialAd.load()
// }
//
//
// // MARK: MAAdDelegate Protocol
//
// /// 广
// func didLoad(_ ad: MAAd) {
// // 0
// retryAttempt = 0
// // 广
// // StartManager.shared.shelfNumber = ""
// StartManager.shared.succeed = true
// StartManager.shared.loadTime = self.adLoadTime
// StartManager.shared.adPlatform = "MAX"
// StartManager.shared.countryCode = ALSdk.shared().configuration.countryCode
// StartManager.shared.adId = self.idad
// StartManager.shared.platformResponseTime = ad.requestLatency
// StartManager.shared.ecpm = Float(ad.revenue)
// StartManager.shared.dsp = ad.dspName
// StartManager.shared.network = ad.networkName
//
// let logMessage = """
// 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": \(StartManager.shared.loadTime ?? 0),
// "adPlatform": \(StartManager.shared.adPlatform ?? ""),
// "countryCode": \(StartManager.shared.countryCode ?? ""),
// "adId": \(StartManager.shared.adId ?? ""),
// "platformResponseTime": \(StartManager.shared.platformResponseTime ?? 0.0),
// "getIpResponseTime": \(StartManager.shared.getIpResponseTime ?? 0.0),
// "ecpm": \(StartManager.shared.ecpm ?? 0.0),
// "dsp": \(StartManager.shared.dsp ?? ""),
// "network": \(StartManager.shared.network ?? "")
// """
//
// AppDelegate.shared.addLogMessage(logMessage)
//
// self.setPostload()
//
// }
//
// /// 广
// func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError) {
// // 广
// // 使 64
// retryAttempt += 1
// let delaySec = pow(2.0, min(6.0, retryAttempt))
// DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
// self.interstitialAd.load()
// }
// }
//
// /// 广
// func didDisplay(_ ad: MAAd) {
// //
// }
//
// /// 广
// func didClick(_ ad: MAAd) {
// // 广
// }
//
// /// 广
// func didHide(_ ad: MAAd) {
// //
// // 广广
// interstitialAd.load()
// WA_TabbarCommon.TabBarController()
// }
//
//
// /// 广
// func didFail(toDisplay ad: MAAd, withError error: MAError) {
// // 广广
// interstitialAd.load()
// }
//
//
//
//
//}