356 lines
12 KiB
Swift
356 lines
12 KiB
Swift
//
|
||
// WA_AddVC.swift
|
||
// wallpaper_project
|
||
|
||
|
||
import UIKit
|
||
import SVProgressHUD
|
||
import AppLovinSDK
|
||
import FirebaseAnalytics
|
||
import FirebaseCore
|
||
import FirebaseRemoteConfig
|
||
import MTGSDKNewInterstitial
|
||
import MTGSDKBidding
|
||
import MTGSDK
|
||
|
||
class WA_AddVC: WA_RootVC,UITextViewDelegate {
|
||
@IBOutlet weak var contentImageV: UIImageView!
|
||
|
||
|
||
@IBOutlet weak var contenttextV: UITextView!
|
||
|
||
@IBOutlet weak var sureBtn: UIButton!
|
||
let placeholderLabel = UILabel()
|
||
|
||
let activityView = UIActivityIndicatorView()
|
||
|
||
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()
|
||
|
||
// 初始化 Remote Config
|
||
remoteConfig = RemoteConfig.remoteConfig()
|
||
|
||
|
||
|
||
// 设置最小获取间隔(开发期间可以设置较小的值)
|
||
let settings = RemoteConfigSettings()
|
||
settings.minimumFetchInterval = 0
|
||
remoteConfig.configSettings = settings
|
||
// Fetch 配置值
|
||
remoteConfig.setDefaults(fromPlist: "isopen")
|
||
// Fetch 配置值
|
||
// fetchRemoteConfig()
|
||
|
||
// fetchRemoteConfig()
|
||
Analytics.logEvent("in_release", parameters: nil)
|
||
contenttextV.layer.cornerRadius = 5
|
||
contenttextV.layer.borderColor = UIColor.black.cgColor
|
||
contenttextV.layer.borderWidth = 1
|
||
|
||
contentImageV.layer.cornerRadius = 5
|
||
sureBtn.layer.cornerRadius = 5
|
||
// 设置textView的frame等属性
|
||
|
||
contenttextV.delegate = self
|
||
|
||
|
||
// 添加占位符Label
|
||
placeholderLabel.text = "Please enter the content..."
|
||
placeholderLabel.textColor = UIColor.lightGray
|
||
placeholderLabel.frame = CGRect(x: 5, y: 8, width: contenttextV.frame.width - 10, height: 20)
|
||
contenttextV.addSubview(placeholderLabel)
|
||
|
||
activityView.center = CGPoint(x: self.view.center.x, y: self.view.center.y - kSafeArea_Top - 44)
|
||
// 停止后,隐藏菊花
|
||
activityView.hidesWhenStopped = true
|
||
activityView.color = .black
|
||
activityView.style = UIActivityIndicatorView.Style.whiteLarge
|
||
|
||
self.view.addSubview(activityView)
|
||
}
|
||
|
||
func textViewDidChange(_ textView: UITextView) {
|
||
placeholderLabel.isHidden = !textView.text.isEmpty
|
||
}
|
||
|
||
override func viewWillAppear(_ animated: Bool) {
|
||
super.viewWillAppear(animated)
|
||
// self.createInterstitialAd()
|
||
|
||
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)
|
||
self.newInterstitialAdManager?.loadAd(withBidToken:self.bidToken!)
|
||
self.fetchRemoteConfig()
|
||
|
||
}else{
|
||
// WA_TabbarCommon.TabBarController()
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
@IBAction func backBtn(_ sender: Any) {
|
||
self.dismiss(animated: true)
|
||
}
|
||
|
||
|
||
@IBAction func upBtn(_ sender: Any) {
|
||
var imagePicker = UIImagePickerController()
|
||
if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) {
|
||
imagePicker.delegate = self
|
||
// imagePicker.allowsEditing = true
|
||
imagePicker.sourceType = .photoLibrary
|
||
present(imagePicker, animated: true, completion: nil)
|
||
}
|
||
|
||
}
|
||
|
||
|
||
@IBAction func sureBtn(_ sender: Any) {
|
||
|
||
if self.contenttextV.text.count <= 0 {
|
||
SVProgressHUD.showInfo(withStatus: "Please enter your recommendation reason")
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
||
SVProgressHUD.dismiss()
|
||
}
|
||
}else if self.contentImageV.image == nil{
|
||
SVProgressHUD.showInfo(withStatus: "Please select the image you recommend")
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 1.0) {
|
||
SVProgressHUD.dismiss()
|
||
}
|
||
}else{
|
||
DispatchQueue.main.asyncAfter(deadline: .now()){
|
||
self.activityView.startAnimating()
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 2.0) {
|
||
DispatchQueue.main.asyncAfter(deadline: .now()){
|
||
self.activityView.stopAnimating()
|
||
self.dismiss(animated: true)
|
||
}
|
||
|
||
if self.isadshow == true{
|
||
// if self.interstitialAd.isReady {
|
||
// self.interstitialAd.show()
|
||
// Analytics.logEvent("release_load_success", parameters: nil)
|
||
// }else{
|
||
// print("-------广告没准备好")
|
||
// Analytics.logEvent("release_load_fail", parameters: nil)
|
||
// }
|
||
let issureready = self.newInterstitialAdManager?.isAdReady()
|
||
if self.isadshow == true{
|
||
if ((issureready) != nil) {
|
||
self.newInterstitialAdManager?.show(from: self)
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
let headimage = UIImage(named: "loginhead_s")
|
||
let base64imgString = convertImageToString(image: headimage!)
|
||
|
||
let contnetimg = self.contentImageV.image
|
||
let base64String = convertImageToString(image: contnetimg!)
|
||
|
||
let dataModel1 = WA_RakModel(name: "Saul", content: self.contenttextV.text, head:base64imgString, img: base64String)
|
||
|
||
PreferencesManager.shared.addRakModel(dataModel1)
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
///是否有广告
|
||
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)")
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// 将 UIImage 转换为字符串
|
||
func convertImageToString(image: UIImage) -> String? {
|
||
if let imageData = image.jpegData(compressionQuality: 1.0) {
|
||
// 将图片数据转换为 Base64 编码的字符串
|
||
let base64String = imageData.base64EncodedString()
|
||
return base64String
|
||
}
|
||
return nil
|
||
}
|
||
|
||
}
|
||
extension WA_AddVC: UIImagePickerControllerDelegate & UINavigationControllerDelegate {
|
||
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
|
||
if let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
|
||
contentImageV.image = selectedImage
|
||
}
|
||
|
||
picker.dismiss(animated: true, completion: nil)
|
||
}
|
||
|
||
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
|
||
picker.dismiss(animated: true, completion: nil)
|
||
}
|
||
}
|
||
extension WA_AddVC: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("广告展示失败")
|
||
SVProgressHUD.showInfo(withStatus: "Successfully published, waiting for review")
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 2) {
|
||
SVProgressHUD.dismiss()
|
||
}
|
||
}
|
||
|
||
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)
|
||
SVProgressHUD.showInfo(withStatus: "Successfully published, waiting for review")
|
||
DispatchQueue.global().asyncAfter(deadline: .now() + 2) {
|
||
SVProgressHUD.dismiss()
|
||
}
|
||
}
|
||
}
|
||
//extension WA_AddVC: MAAdDelegate
|
||
//{
|
||
// func createInterstitialAd()
|
||
// {
|
||
// interstitialAd = MAInterstitialAd(adUnitIdentifier: "83802ca889ba09e6")
|
||
// interstitialAd.delegate = self
|
||
//
|
||
// // Load the first ad
|
||
// interstitialAd.load()
|
||
// }
|
||
//
|
||
// // MARK: MAAdDelegate Protocol
|
||
//
|
||
// func didLoad(_ ad: MAAd)
|
||
// {
|
||
// // Interstitial ad is ready to be shown. 'interstitialAd.isReady' will now return 'true'
|
||
//
|
||
// // Reset retry attempt
|
||
// retryAttempt = 0
|
||
// }
|
||
//
|
||
// func didFailToLoadAd(forAdUnitIdentifier adUnitIdentifier: String, withError error: MAError)
|
||
// {
|
||
// // Interstitial ad failed to load
|
||
// // We recommend retrying with exponentially higher delays up to a maximum delay (in this case 64 seconds)
|
||
//
|
||
// retryAttempt += 1
|
||
// let delaySec = pow(2.0, min(6.0, retryAttempt))
|
||
//
|
||
// DispatchQueue.main.asyncAfter(deadline: .now() + delaySec) {
|
||
// self.interstitialAd.load()
|
||
// }
|
||
// }
|
||
//
|
||
// func didDisplay(_ ad: MAAd)
|
||
// {
|
||
// // Pause your app's background audio
|
||
// }
|
||
//
|
||
// func didClick(_ ad: MAAd) {}
|
||
//
|
||
// func didHide(_ ad: MAAd)
|
||
// {
|
||
// // Resume your app's background audio
|
||
// // Interstitial ad is hidden. Pre-load the next ad
|
||
//
|
||
// interstitialAd.load()
|
||
// SVProgressHUD.showInfo(withStatus: "Successfully published, waiting for review")
|
||
// DispatchQueue.global().asyncAfter(deadline: .now() + 2) {
|
||
// SVProgressHUD.dismiss()
|
||
// }
|
||
//
|
||
// }
|
||
//
|
||
// func didFail(toDisplay ad: MAAd, withError error: MAError)
|
||
// {
|
||
// // Interstitial ad failed to display. We recommend loading the next ad
|
||
// interstitialAd.load()
|
||
// }
|
||
//
|
||
//}
|