Commit d95f378d authored by CZ1004's avatar CZ1004

广告逻辑添加第一个版本

parent 09c95bff
...@@ -13,6 +13,9 @@ class AdvManager : NSObject,FullScreenContentDelegate { ...@@ -13,6 +13,9 @@ class AdvManager : NSObject,FullScreenContentDelegate {
static let shared : AdvManager = AdvManager() static let shared : AdvManager = AdvManager()
// 看完广告的回调
var finisedCallBack:()->Void = {}
// 激励插页广告 // 激励插页广告
var rewardedInterstitialAd: RewardedInterstitialAd? var rewardedInterstitialAd: RewardedInterstitialAd?
...@@ -26,7 +29,7 @@ class AdvManager : NSObject,FullScreenContentDelegate { ...@@ -26,7 +29,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0] let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0]
// 进入页面之后30秒 // 进入页面之后30秒
var advTimeAfterInAPP : Int = 30000 var advTimeAfterInAPP : Int = 30
var timer: Timer? var timer: Timer?
...@@ -128,6 +131,7 @@ class AdvManager : NSObject,FullScreenContentDelegate { ...@@ -128,6 +131,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 更新值 // 更新值
updateAdvStrategyValue() updateAdvStrategyValue()
finisedCallBack()
} }
......
// //
// AdvTipDeleteController.swift // AdvTipDeleteView.swift
// PhoneManager // PhoneManager
// //
// Created by edy on 2025/4/18. // Created by edy on 2025/4/21.
// //
import Foundation import Foundation
...@@ -27,10 +27,12 @@ struct AdvTipModel { ...@@ -27,10 +27,12 @@ struct AdvTipModel {
self.showLessButton = showLessButton self.showLessButton = showLessButton
self.deleteMoreText = deleteMoreText self.deleteMoreText = deleteMoreText
self.deleteLessText = deleteLessText self.deleteLessText = deleteLessText
} }
} }
class AdvTipDeleteController : BaseViewController { class AdvTipDeleteView : UIView {
var deleteButtonClickCallback : (Bool)->Void = {isMore in }
var deleteType : TipDeleteType? var deleteType : TipDeleteType?
// getOtherInfoByType() // getOtherInfoByType()
...@@ -42,29 +44,11 @@ class AdvTipDeleteController : BaseViewController { ...@@ -42,29 +44,11 @@ class AdvTipDeleteController : BaseViewController {
// self.collectionView.reloadData() // self.collectionView.reloadData()
// }, completion: nil) // }, completion: nil)
var tipDeleteModel : AdvTipModel? var tipDeleteModel : AdvTipModel = AdvTipModel(titleText: "", detailTitleText: "", showLessButton: false, deleteMoreText: "", deleteLessText: "")
// {
// didSet{
// DispatchQueue.main.async {
// self.tipTitle.text = self.tipDeleteModel.titleText
// self.tipDetailTitle.text = self.tipDeleteModel.detailTitleText
// self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, for: .normal)
// self.deleteLessButton.setTitle(self.tipDeleteModel.deleteLessText, for: .normal)
// }
// }
// }
lazy var shadowView : UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
return view
}()
lazy var tipView : UIView = { lazy var tipView : UIView = {
let view = UIView() let view = UIView()
view.backgroundColor = .white view.backgroundColor = .white
...@@ -85,6 +69,7 @@ class AdvTipDeleteController : BaseViewController { ...@@ -85,6 +69,7 @@ class AdvTipDeleteController : BaseViewController {
view.numberOfLines = 0 view.numberOfLines = 0
view.font = UIFont.systemFont(ofSize: 20, weight: .bold) view.font = UIFont.systemFont(ofSize: 20, weight: .bold)
view.textColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1) view.textColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1)
view.textAlignment = .center
return view return view
}() }()
...@@ -93,6 +78,7 @@ class AdvTipDeleteController : BaseViewController { ...@@ -93,6 +78,7 @@ class AdvTipDeleteController : BaseViewController {
view.numberOfLines = 0 view.numberOfLines = 0
view.font = UIFont.systemFont(ofSize: 14, weight: .regular) view.font = UIFont.systemFont(ofSize: 14, weight: .regular)
view.textColor = UIColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 1) view.textColor = UIColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 1)
view.textAlignment = .center
return view return view
}() }()
...@@ -100,7 +86,6 @@ class AdvTipDeleteController : BaseViewController { ...@@ -100,7 +86,6 @@ class AdvTipDeleteController : BaseViewController {
let layout = UICollectionViewFlowLayout() let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal layout.scrollDirection = .horizontal
layout.minimumInteritemSpacing = 8 layout.minimumInteritemSpacing = 8
layout.minimumLineSpacing = 0
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
collectionView.dataSource = self collectionView.dataSource = self
collectionView.delegate = self collectionView.delegate = self
...@@ -118,6 +103,8 @@ class AdvTipDeleteController : BaseViewController { ...@@ -118,6 +103,8 @@ class AdvTipDeleteController : BaseViewController {
view.clipsToBounds = true view.clipsToBounds = true
view.layer.cornerRadius = 24 view.layer.cornerRadius = 24
view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold) view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold)
view.setImage(UIImage(named: "ic_ad_pop"), for: .normal)
view.addTarget(self, action: #selector(deleteMoreButtonSelect), for: .touchUpInside)
return view return view
}() }()
...@@ -129,16 +116,14 @@ class AdvTipDeleteController : BaseViewController { ...@@ -129,16 +116,14 @@ class AdvTipDeleteController : BaseViewController {
view.clipsToBounds = true view.clipsToBounds = true
view.layer.cornerRadius = 24 view.layer.cornerRadius = 24
view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold) view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold)
view.addTarget(self, action: #selector(deleteLessButtonSelect), for: .touchUpInside)
return view return view
}() }()
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
override func viewDidLoad() { self.addSubview(self.tipView)
super.viewDidLoad()
self.view.addSubview(shadowView)
self.shadowView.addSubview(self.tipView)
self.tipView.addSubview(self.closeButton) self.tipView.addSubview(self.closeButton)
self.tipView.addSubview(self.tipTitle) self.tipView.addSubview(self.tipTitle)
self.tipView.addSubview(self.tipDetailTitle) self.tipView.addSubview(self.tipDetailTitle)
...@@ -149,10 +134,6 @@ class AdvTipDeleteController : BaseViewController { ...@@ -149,10 +134,6 @@ class AdvTipDeleteController : BaseViewController {
self.shadowView.snp.makeConstraints { make in
make.left.right.top.bottom.equalToSuperview()
}
self.tipView.snp.makeConstraints { make in self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview() make.center.equalToSuperview()
make.width.equalTo(345) make.width.equalTo(345)
...@@ -188,48 +169,38 @@ class AdvTipDeleteController : BaseViewController { ...@@ -188,48 +169,38 @@ class AdvTipDeleteController : BaseViewController {
make.height.equalTo(48) make.height.equalTo(48)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
self.deleteMoreButton.snp.makeConstraints { make in self.deleteLessButton.snp.makeConstraints { make in
make.top.equalTo(self.deleteMoreButton.snp.bottom).offset(4) make.top.equalTo(self.deleteMoreButton.snp.bottom).offset(4)
make.width.equalTo(305) make.width.equalTo(305)
make.height.equalTo(48) make.height.equalTo(48)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
}
}
class ImageCell: UICollectionViewCell {
static let reuseIdentifier = "ImageCell"
let imageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
imageView.layer.cornerRadius = 12
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
contentView.addSubview(imageView)
imageView.frame = contentView.bounds
} }
required init?(coder: NSCoder) { required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
} }
extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDelegateFlowLayout{ func getOtherInfoByType(type : PhotsFileType) {
func getOtherInfoByType() {
// 首先获取第一个button显示的内容 // 首先获取第一个button显示的内容
let photosCount = self.dataSource!.count > 25 ? 25 : self.dataSource?.count let photosCount = self.dataSource!.count > 25 ? 25 : self.dataSource?.count
let deleteButtonTitle = "Delete \(String(describing: photosCount)) Duplicates" let deleteButtonTitle = "Delete \(photosCount ?? 0) \(type.rawValue)"
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
var deleteLessText = ""
if type == .videos || type == .SimilarVideos {
deleteLessText = "Delete Only \(freeDeleteCount) Videos"
}else {
deleteLessText = "Delete Only \(freeDeleteCount) Photos"
}
switch self.deleteType { switch self.deleteType {
case .deletePhotosMore: case .deletePhotosMore:
...@@ -237,7 +208,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel ...@@ -237,7 +208,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
titleText: "Watch a rewarded ad to delete photos", titleText: "Watch a rewarded ad to delete photos",
detailTitleText: "You need to watch an ad to delete 25 photos with the free version.", detailTitleText: "You need to watch an ad to delete 25 photos with the free version.",
showLessButton: true, showLessButton: true,
deleteMoreText: deleteButtonTitle, deleteLessText: "Delete Only 5 Photos") deleteMoreText: deleteButtonTitle, deleteLessText: deleteLessText)
case .deletePhotoOne: case .deletePhotoOne:
self.tipDeleteModel = AdvTipModel.init( self.tipDeleteModel = AdvTipModel.init(
titleText: "Watch a rewarded ad to delete photos", titleText: "Watch a rewarded ad to delete photos",
...@@ -249,7 +220,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel ...@@ -249,7 +220,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
titleText: "Watch a rewarded ad to delete videos", titleText: "Watch a rewarded ad to delete videos",
detailTitleText: "You need to watch an ad to delete 25 videos with the free version.", detailTitleText: "You need to watch an ad to delete 25 videos with the free version.",
showLessButton: true, showLessButton: true,
deleteMoreText: deleteButtonTitle, deleteLessText: "Delete Only 5 Photos") deleteMoreText: deleteButtonTitle, deleteLessText: deleteLessText)
case .deleteVideoOne: case .deleteVideoOne:
self.tipDeleteModel = AdvTipModel.init( self.tipDeleteModel = AdvTipModel.init(
titleText: "Watch a rewarded ad to delete videos", titleText: "Watch a rewarded ad to delete videos",
...@@ -264,6 +235,12 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel ...@@ -264,6 +235,12 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
deleteMoreText: deleteButtonTitle, deleteLessText: "") deleteMoreText: deleteButtonTitle, deleteLessText: "")
} }
DispatchQueue.main.async {
self.tipTitle.text = self.tipDeleteModel.titleText
self.tipDetailTitle.text = self.tipDeleteModel.detailTitleText
self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, for: .normal)
self.deleteLessButton.setTitle(self.tipDeleteModel.deleteLessText, for: .normal)
}
} }
...@@ -282,9 +259,43 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel ...@@ -282,9 +259,43 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
return CGSize(width: 104, height: 104) return CGSize(width: 104, height: 104)
} }
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 8
}
@objc func closeButtonAction(){ @objc func closeButtonAction(){
self.dismiss(animated: false) self.removeFromSuperview()
}
@objc func deleteMoreButtonSelect() {
deleteButtonClickCallback(true)
}
@objc func deleteLessButtonSelect() {
deleteButtonClickCallback(false)
}
}
class ImageCell: UICollectionViewCell {
static let reuseIdentifier = "ImageCell"
let imageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
imageView.layer.cornerRadius = 12
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
contentView.addSubview(imageView)
imageView.frame = contentView.bounds
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
} }
} }
// //
// AdvTipSelectController.swift // AdvTipSelectView.swift
// PhoneManager // PhoneManager
// //
// Created by edy on 2025/4/18. // Created by edy on 2025/4/21.
// //
import Foundation import Foundation
enum TipSelectType { enum TipSelectType {
case selectTypeCompressVideo case selectTypeCompressVideo
case selectTypeCompressPhoto case selectTypeCompressPhoto
...@@ -28,38 +27,22 @@ struct AdvTipSelectModel { ...@@ -28,38 +27,22 @@ struct AdvTipSelectModel {
} }
} }
class AdvTipSelectController : UIViewController {
class AdvTipSelectView : UIView {
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
var selectType : TipSelectType {
didSet{
getOtherInfoByType()
}
}
var selectClickCallback : (Bool)->Void = {isSrue in }
var tipSelectModel : AdvTipSelectModel { required init?(coder: NSCoder) {
didSet{ fatalError("init(coder:) has not been implemented")
DispatchQueue.main.async {
self.tipTitle.text = self.tipSelectModel.titleText
self.tipDetailTitle.text = self.tipSelectModel.detailTitleText
self.firstButton.setTitle(self.tipSelectModel.deleteMoreText, for: .normal)
self.secondButton.setTitle(self.tipSelectModel.deleteLessText, for: .normal)
}
}
} }
var selectType : TipSelectType?
var tipSelectModel : AdvTipSelectModel?
lazy var shadowView : UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
return view
}()
lazy var tipView : UIView = { lazy var tipView : UIView = {
let view = UIView() let view = UIView()
...@@ -89,6 +72,7 @@ class AdvTipSelectController : UIViewController { ...@@ -89,6 +72,7 @@ class AdvTipSelectController : UIViewController {
view.numberOfLines = 0 view.numberOfLines = 0
view.font = UIFont.systemFont(ofSize: 20, weight: .bold) view.font = UIFont.systemFont(ofSize: 20, weight: .bold)
view.textColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1) view.textColor = UIColor(red: 0.1, green: 0.1, blue: 0.1, alpha: 1)
view.textAlignment = .center
return view return view
}() }()
...@@ -97,6 +81,7 @@ class AdvTipSelectController : UIViewController { ...@@ -97,6 +81,7 @@ class AdvTipSelectController : UIViewController {
view.numberOfLines = 0 view.numberOfLines = 0
view.font = UIFont.systemFont(ofSize: 14, weight: .regular) view.font = UIFont.systemFont(ofSize: 14, weight: .regular)
view.textColor = UIColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 1) view.textColor = UIColor(red: 0.4, green: 0.4, blue: 0.4, alpha: 1)
view.textAlignment = .center
return view return view
}() }()
...@@ -109,6 +94,8 @@ class AdvTipSelectController : UIViewController { ...@@ -109,6 +94,8 @@ class AdvTipSelectController : UIViewController {
view.clipsToBounds = true view.clipsToBounds = true
view.layer.cornerRadius = 24 view.layer.cornerRadius = 24
view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold) view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold)
view.setImage(UIImage(named: "ic_ad_pop"), for: .normal)
view.addTarget(self, action: #selector(buttonSureSelectAction), for: .touchUpInside)
return view return view
}() }()
...@@ -120,16 +107,17 @@ class AdvTipSelectController : UIViewController { ...@@ -120,16 +107,17 @@ class AdvTipSelectController : UIViewController {
view.clipsToBounds = true view.clipsToBounds = true
view.layer.cornerRadius = 24 view.layer.cornerRadius = 24
view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold) view.titleLabel?.font = UIFont.systemFont(ofSize: 16, weight: .bold)
view.addTarget(self, action: #selector(buttonCancelSelectAction), for: .touchUpInside)
return view return view
}() }()
override init(frame: CGRect) {
super.init(frame: frame)
override func viewDidLoad() {
super.viewDidLoad() self.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5000)
self.view.addSubview(shadowView)
self.shadowView.addSubview(self.tipView) self.addSubview(self.tipView)
self.tipView.addSubview(self.closeButton) self.tipView.addSubview(self.closeButton)
self.tipView.addSubview(self.logoView) self.tipView.addSubview(self.logoView)
self.tipView.addSubview(self.tipTitle) self.tipView.addSubview(self.tipTitle)
...@@ -140,9 +128,6 @@ class AdvTipSelectController : UIViewController { ...@@ -140,9 +128,6 @@ class AdvTipSelectController : UIViewController {
self.shadowView.snp.makeConstraints { make in
make.left.right.top.bottom.equalToSuperview()
}
self.tipView.snp.makeConstraints { make in self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview() make.center.equalToSuperview()
...@@ -187,10 +172,13 @@ class AdvTipSelectController : UIViewController { ...@@ -187,10 +172,13 @@ class AdvTipSelectController : UIViewController {
make.height.equalTo(48) make.height.equalTo(48)
make.centerX.equalToSuperview() make.centerX.equalToSuperview()
} }
} }
} }
extension AdvTipSelectController {
extension AdvTipSelectView{
func getOtherInfoByType() { func getOtherInfoByType() {
switch self.selectType { switch self.selectType {
case .selectTypeCompressVideo: case .selectTypeCompressVideo:
...@@ -208,10 +196,26 @@ extension AdvTipSelectController { ...@@ -208,10 +196,26 @@ extension AdvTipSelectController {
titleText: "Watch a rewarded ad to set Pro Animations", titleText: "Watch a rewarded ad to set Pro Animations",
detailTitleText: "You need to watch an ad to set amazing animations that are unlimited for pro users.", detailTitleText: "You need to watch an ad to set amazing animations that are unlimited for pro users.",
deleteMoreText: "Set Animation", deleteLessText: "Cancel") deleteMoreText: "Set Animation", deleteLessText: "Cancel")
case .none:
self.tipSelectModel = AdvTipSelectModel.init(
titleText: "",
detailTitleText: "",
deleteMoreText: "", deleteLessText: "")
} }
self.tipTitle.text = self.tipSelectModel?.titleText
self.tipDetailTitle.text = self.tipSelectModel?.detailTitleText
self.firstButton.setTitle(self.tipSelectModel?.deleteMoreText, for: .normal)
self.secondButton.setTitle(self.tipSelectModel?.deleteLessText, for: .normal)
} }
@objc func closeButtonAction(){ @objc func closeButtonAction(){
self.view.removeFromSuperview() self.removeFromSuperview()
} }
@objc func buttonSureSelectAction(){
self.selectClickCallback(true)
self.removeFromSuperview()
}
@objc func buttonCancelSelectAction(){
self.removeFromSuperview()
}
} }
...@@ -50,6 +50,25 @@ class ChargeInfoViewController:BaseViewController { ...@@ -50,6 +50,25 @@ class ChargeInfoViewController:BaseViewController {
sview.flag = self.flag sview.flag = self.flag
sview.isHidden = type == .setting ? false : true sview.isHidden = type == .setting ? false : true
sview.settingCallBack = {
if HomePayModel.share.isNoAd == false {
// 弹出提示框
let alertView = AdvTipSelectView(frame: self.view.bounds)
alertView.selectType = .selectTypeSetAnimation
alertView.getOtherInfoByType()
self.view.addSubview(alertView)
alertView.selectClickCallback = {isSure in
self.popAdverTisement()
AdvManager.shared.finisedCallBack = {
self.setAnimation()
}
}
}else {
self.setAnimation()
}
}
return sview return sview
}() }()
...@@ -157,4 +176,41 @@ class ChargeInfoViewController:BaseViewController { ...@@ -157,4 +176,41 @@ class ChargeInfoViewController:BaseViewController {
isShowSettingView = !(isShowSettingView ?? false) isShowSettingView = !(isShowSettingView ?? false)
isShowBack = !(isShowBack ?? false) isShowBack = !(isShowBack ?? false)
} }
func setAnimation(){
// 存储到userDefaults
UserDefaults.standard.set(String(self.flag!), forKey: "chargePicInfo")
let alert = UIAlertController(title: nil, message: "Done!", preferredStyle: .alert)
self.present(alert, animated: true, completion: nil)
// 2 秒后关闭弹窗
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true, completion: nil)
// 是否是第一次进入
let chargeGuideFinished = UserDefaults.standard.object(forKey: "ChargeGuideFinished")
if chargeGuideFinished == nil {
let vc : ChargeGuideStartController = ChargeGuideStartController()
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true)
vc.callback = {[weak self] text in
guard let self else {return}
let vc : ChargeGuideController = ChargeGuideController()
self.navigationController?.pushViewController(vc, animated: true)
}
UserDefaults.standard.set("ChargeGuideFinished", forKey: "ChargeGuideFinished")
}else{
self.navigationController?.popViewController(animated: true)
}
}
}
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
}
} }
...@@ -9,6 +9,8 @@ import UIKit ...@@ -9,6 +9,8 @@ import UIKit
class ChargeInfoSettingView:UIView { class ChargeInfoSettingView:UIView {
var settingCallBack:()->Void = {}
var model : ChargeDataModel? var model : ChargeDataModel?
var flag : Int? var flag : Int?
...@@ -52,34 +54,12 @@ class ChargeInfoSettingView:UIView { ...@@ -52,34 +54,12 @@ class ChargeInfoSettingView:UIView {
} }
@objc func settingBtnClick() { @objc func settingBtnClick() {
// 存储到userDefaults
UserDefaults.standard.set(String(flag!), forKey: "chargePicInfo")
let alert = UIAlertController(title: nil, message: "Done!", preferredStyle: .alert)
self.responderViewController()?.present(alert, animated: true, completion: nil)
// 2 秒后关闭弹窗 self.settingCallBack()
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true, completion: nil)
// 是否是第一次进入
let chargeGuideFinished = UserDefaults.standard.object(forKey: "ChargeGuideFinished")
if chargeGuideFinished == nil {
let vc : ChargeGuideStartController = ChargeGuideStartController()
vc.modalPresentationStyle = .fullScreen
self.responderViewController()?.present(vc, animated: true)
vc.callback = {[weak self] text in
guard let self else {return}
let vc : ChargeGuideController = ChargeGuideController()
self.responderViewController()?.navigationController?.pushViewController(vc, animated: true)
}
UserDefaults.standard.set("ChargeGuideFinished", forKey: "ChargeGuideFinished")
}else{
self.responderViewController()?.navigationController?.popViewController(animated: true)
}
}
} }
} }
...@@ -323,7 +323,18 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -323,7 +323,18 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
HomePayViewController.show { HomePayViewController.show {
self.jumpToNextPage() // 弹出提示框
let alertView = AdvTipSelectView(frame: self.view.bounds)
alertView.selectType = .selectTypeCompressPhoto
alertView.getOtherInfoByType()
self.view.addSubview(alertView)
alertView.selectClickCallback = {isSure in
self.popAdverTisement()
AdvManager.shared.finisedCallBack = {
self.jumpToNextPage()
}
}
} }
}else { }else {
self.jumpToNextPage() self.jumpToNextPage()
...@@ -332,6 +343,11 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -332,6 +343,11 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
} }
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
}
func jumpToNextPage(){ func jumpToNextPage(){
// 先将值传到下一个页面 // 先将值传到下一个页面
let vc : CompressQualityController = CompressQualityController() let vc : CompressQualityController = CompressQualityController()
......
...@@ -62,47 +62,6 @@ class HomeInfoViewController:BaseViewController { ...@@ -62,47 +62,6 @@ class HomeInfoViewController:BaseViewController {
sview.deleteCallBack = { [weak self] array in sview.deleteCallBack = { [weak self] array in
guard let self = self else { return } guard let self = self else { return }
// 首先看是否订阅
if HomePayModel.share.isNoAd == false {
// 没有订阅
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
Print(freeDeleteCount)
// 如果数量等于0
if freeDeleteCount == 0 {
// 弹出单个删除类型
// 跳弹窗
let vc : AdvTipDeleteController = AdvTipDeleteController()
vc.modalPresentationStyle = .fullScreen
self.present(vc, animated: true)
}else {
let tempArray = array as! [AssetModel]
// 如果小于
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
}
}
}
let deleteOp:((Any)->Void) = {[weak self] imgs in let deleteOp:((Any)->Void) = {[weak self] imgs in
if let cA = imgs as? [AssetModel] { if let cA = imgs as? [AssetModel] {
var tempStringArray : [String] = [] var tempStringArray : [String] = []
...@@ -136,31 +95,125 @@ class HomeInfoViewController:BaseViewController { ...@@ -136,31 +95,125 @@ class HomeInfoViewController:BaseViewController {
} }
} }
// 首先看是否订阅
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
// 重复 // 没有订阅
if self.type == .duplicates {
HomePayViewController.show { // 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
deleteOp(array) // 获取次数对应的删除照片数量
} let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
}else if self.type == .similar { Print(freeDeleteCount)
// 相似
HomeNoAdsViewController.show { // 如果数量等于0
deleteOp(array) let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array as? [AssetModel]
if freeDeleteCount == 0 {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
}else {
let tempArray = array as! [AssetModel]
// 如果小于
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
view.deleteType = .deletePhotosMore
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
} }
}else{ }
HomeNoAdsViewController.show { view.deleteButtonClickCallback = {isMore in
deleteOp(array) if isMore == true {
// 先弹出充会员,然后结束之后弹广告
if self.type == .duplicates {
HomePayViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array)
}
}
}else if self.type == .similar {
// 相似
HomeNoAdsViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array)
}
}
}else{
HomeNoAdsViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array)
}
}
}
// 广告
}else{
if self.type == .duplicates {
HomePayViewController.show {
deleteOp(array)
}
}else if self.type == .similar {
// 相似
HomeNoAdsViewController.show {
deleteOp(array)
}
}else{
HomeNoAdsViewController.show {
deleteOp(array)
}
}
} }
} }
}else { }else {
deleteOp(array) deleteOp(array)
} }
//
// if HomePayModel.share.isNoAd == false {
// // 重复
// if self.type == .duplicates {
// HomePayViewController.show {
//
// deleteOp(array)
// }
// }else if self.type == .similar {
// // 相似
// HomeNoAdsViewController.show {
// deleteOp(array)
// }
// }else{
// HomeNoAdsViewController.show {
// deleteOp(array)
// }
// }
// }else {
// deleteOp(array)
// }
//
} }
...@@ -180,9 +233,7 @@ class HomeInfoViewController:BaseViewController { ...@@ -180,9 +233,7 @@ class HomeInfoViewController:BaseViewController {
/// 弹出广告 /// 弹出广告
func popAdverTisement(){ func popAdverTisement(){
if AdvManager.shared.advTimeAfterInAPP <= 0 { AdvManager.shared.showInterstitialAd(vc: self)
AdvManager.shared.showInterstitialAd(vc: self)
}
} }
// 由于继承自 UIViewController,必须实现这个必需的构造器 // 由于继承自 UIViewController,必须实现这个必需的构造器
......
...@@ -380,14 +380,60 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -380,14 +380,60 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
@objc func deleteButtonAction(){ @objc func deleteButtonAction(){
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
HomePayViewController.show {
self.deleteAction() // 没有订阅
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
Print(freeDeleteCount)
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel
if freeDeleteCount == 0 {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.mediaType!)
self.view.addSubview(view)
}else {
let tempArray = self.selectedModel
// 如果小于
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
view.deleteType = .deletePhotosMore
view.getOtherInfoByType(type: self.mediaType!)
self.view.addSubview(view)
}
}
view.deleteButtonClickCallback = {isMore in
if isMore == true {
// 先弹出充会员,然后结束之后弹广告
HomePayViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
self.deleteAction()
}
}
// 广告
}else{
HomePayViewController.show {
self.deleteAction()
}
}
} }
}else { }else {
self.deleteAction() self.deleteAction()
} }
}
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
} }
func deleteAction(){ func deleteAction(){
// 删除当前选择 // 删除当前选择
......
...@@ -322,14 +322,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -322,14 +322,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
@objc func deleteButtonAction(){ @objc func deleteButtonAction(){
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
HomePayViewController.show { // 获取当前免费次数
self.deleteAction() let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
Print(freeDeleteCount)
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel
if freeDeleteCount == 0 {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: .videos)
self.view.addSubview(view)
}else {
let tempArray = self.selectedModel
// 如果小于
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
view.deleteType = .deletePhotosMore
view.getOtherInfoByType(type: .videos)
self.view.addSubview(view)
}
}
view.deleteButtonClickCallback = {isMore in
if isMore == true {
// 先弹出充会员,然后结束之后弹广告
HomePayViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
self.deleteAction()
}
}
// 广告
}else{
HomePayViewController.show {
self.deleteAction()
}
}
} }
}else { }else {
self.deleteAction() self.deleteAction()
} }
} }
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
}
func deleteAction(){ func deleteAction(){
// 删除当前选择 // 删除当前选择
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: self.selectedModel.map{$0.localIdentifier}, options: nil) let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: self.selectedModel.map{$0.localIdentifier}, options: nil)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment