Commit 37ce2e23 authored by CZ1004's avatar CZ1004

广告和优化

parent d95f378d
...@@ -22,8 +22,35 @@ class AdvManager : NSObject,FullScreenContentDelegate { ...@@ -22,8 +22,35 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 插页广告 // 插页广告
var interstitial: InterstitialAd? var interstitial: InterstitialAd?
var currentTimes : Int = 3
/// 默认每日免费删除次数 /// 默认每日免费删除次数
let defaultFreeTimes : Int = 3 var defaultFreeTimes : Int {
get {
// 获取存储的时间
let saveTime = UserDefaults.standard.object(forKey: "saveTime")
if saveTime == nil {
UserDefaults.standard.set(Date(), forKey: "saveTime")
UserDefaults.standard.set(AdvManager.shared.currentTimes, forKey: "saveAdvTimes")
return AdvManager.shared.currentTimes
}else {
// 判断时间是不是同一天
let calendar = Calendar.current
let isSameDay = calendar.isDate(saveTime as! Date, inSameDayAs: Date())
if isSameDay {
// 如果是同一天
let times = UserDefaults.standard.object(forKey: "saveAdvTimes") as! Int
// 如果等于0 那啥也不做
return times
}else{
// 如果不是同一天,重置次数
UserDefaults.standard.set(Date(), forKey: "saveTime")
UserDefaults.standard.set(AdvManager.shared.currentTimes, forKey: "saveAdvTimes")
return AdvManager.shared.currentTimes
}
}
}
}
/// 广告策略 第一次可删除5张,第二次可删除5张,第三次可删除4张 /// 广告策略 第一次可删除5张,第二次可删除5张,第三次可删除4张
let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0] let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0]
...@@ -31,7 +58,7 @@ class AdvManager : NSObject,FullScreenContentDelegate { ...@@ -31,7 +58,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 进入页面之后30秒 // 进入页面之后30秒
var advTimeAfterInAPP : Int = 30 var advTimeAfterInAPP : Int = 30
var timer: Timer? var timer: DispatchSourceTimer?
/// 能请求广告 /// 能请求广告
......
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
// //
import Foundation import Foundation
import SnapKit
enum TipDeleteType { enum TipDeleteType {
case deletePhotosMore case deletePhotosMore
...@@ -35,18 +36,19 @@ class AdvTipDeleteView : UIView { ...@@ -35,18 +36,19 @@ class AdvTipDeleteView : UIView {
var deleteButtonClickCallback : (Bool)->Void = {isMore in } var deleteButtonClickCallback : (Bool)->Void = {isMore in }
var deleteType : TipDeleteType? var deleteType : TipDeleteType?
// getOtherInfoByType()
// 默认免费删除
var freeDeleteCount : Int = 0
var dataSource : [AssetModel]?
// UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: { var dataSource : [AssetModel]?
// self.collectionView.reloadData()
// }, completion: nil)
var tipDeleteModel : AdvTipModel = AdvTipModel(titleText: "", detailTitleText: "", showLessButton: false, deleteMoreText: "", deleteLessText: "") var tipDeleteModel : AdvTipModel = AdvTipModel(titleText: "", detailTitleText: "", showLessButton: false, deleteMoreText: "", deleteLessText: "")
private var heightConstraint: Constraint?
lazy var tipView : UIView = { lazy var tipView : UIView = {
...@@ -83,7 +85,7 @@ class AdvTipDeleteView : UIView { ...@@ -83,7 +85,7 @@ class AdvTipDeleteView : UIView {
}() }()
lazy var collectionView : UICollectionView = { lazy var collectionView : UICollectionView = {
let layout = UICollectionViewFlowLayout() let layout = CenteredGroupCollectionViewLayout()
layout.scrollDirection = .horizontal layout.scrollDirection = .horizontal
layout.minimumInteritemSpacing = 8 layout.minimumInteritemSpacing = 8
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout) let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
...@@ -137,7 +139,7 @@ class AdvTipDeleteView : UIView { ...@@ -137,7 +139,7 @@ class AdvTipDeleteView : UIView {
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)
make.height.equalTo(410) heightConstraint = make.height.equalTo(410).constraint
} }
self.closeButton.snp.makeConstraints { make in self.closeButton.snp.makeConstraints { make in
...@@ -189,16 +191,11 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat ...@@ -189,16 +191,11 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
let photosCount = self.dataSource!.count > 25 ? 25 : self.dataSource?.count let photosCount = self.dataSource!.count > 25 ? 25 : self.dataSource?.count
let deleteButtonTitle = "Delete \(photosCount ?? 0) \(type.rawValue)" let deleteButtonTitle = "Delete \(photosCount ?? 0) \(type.rawValue)"
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
var deleteLessText = "" var deleteLessText = ""
if type == .videos || type == .SimilarVideos { if type == .videos || type == .SimilarVideos {
deleteLessText = "Delete Only \(freeDeleteCount) Videos" deleteLessText = "Delete Only \(self.freeDeleteCount) Videos"
}else { }else {
deleteLessText = "Delete Only \(freeDeleteCount) Photos" deleteLessText = "Delete Only \(self.freeDeleteCount) Photos"
} }
...@@ -241,6 +238,24 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat ...@@ -241,6 +238,24 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, for: .normal) self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, for: .normal)
self.deleteLessButton.setTitle(self.tipDeleteModel.deleteLessText, for: .normal) self.deleteLessButton.setTitle(self.tipDeleteModel.deleteLessText, for: .normal)
} }
// 更新页面
updateCurrentPageStatus()
}
func updateCurrentPageStatus(){
DispatchQueue.main.async {
if self.tipDeleteModel.showLessButton == true {
self.deleteLessButton.isHidden = false
self.heightConstraint?.update(offset: 410)
}else{
self.deleteLessButton.isHidden = true
self.heightConstraint?.update(offset: 360)
}
// 强制重新布局
self.setNeedsLayout()
self.layoutIfNeeded()
}
} }
...@@ -269,9 +284,11 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat ...@@ -269,9 +284,11 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
} }
@objc func deleteMoreButtonSelect() { @objc func deleteMoreButtonSelect() {
self.removeFromSuperview()
deleteButtonClickCallback(true) deleteButtonClickCallback(true)
} }
@objc func deleteLessButtonSelect() { @objc func deleteLessButtonSelect() {
self.removeFromSuperview()
deleteButtonClickCallback(false) deleteButtonClickCallback(false)
} }
...@@ -299,3 +316,34 @@ class ImageCell: UICollectionViewCell { ...@@ -299,3 +316,34 @@ class ImageCell: UICollectionViewCell {
fatalError("init(coder:) has not been implemented") fatalError("init(coder:) has not been implemented")
} }
} }
class CenteredGroupCollectionViewLayout: UICollectionViewFlowLayout {
override func layoutAttributesForElements(in rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
guard let attributes = super.layoutAttributesForElements(in: rect) else { return nil }
guard let collectionView = collectionView else { return attributes }
// 计算内容总宽度
var contentWidth: CGFloat = 0
for attribute in attributes {
contentWidth += attribute.frame.width
}
contentWidth += minimumInteritemSpacing * CGFloat(attributes.count - 1)
contentWidth += sectionInset.left + sectionInset.right
// 计算偏移量
let collectionViewWidth = collectionView.bounds.width
var offsetX: CGFloat = 0
if contentWidth < collectionViewWidth {
offsetX = (collectionViewWidth - contentWidth) / 2
}
// 调整布局属性
var runningOffset: CGFloat = offsetX + sectionInset.left
for attribute in attributes {
attribute.frame.origin.x = runningOffset
runningOffset += attribute.frame.width + minimumInteritemSpacing
}
return attributes
}
}
...@@ -50,8 +50,12 @@ class ChargeInfoViewController:BaseViewController { ...@@ -50,8 +50,12 @@ 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 = { sview.settingCallBack = {isFree in
if HomePayModel.share.isNoAd == false { // 如果是pro用户或者是免费的
if HomePayModel.share.isNoAd == false && isFree != true {
// 弹出内购页面
HomePayViewController.show {
// 弹出提示框 // 弹出提示框
let alertView = AdvTipSelectView(frame: self.view.bounds) let alertView = AdvTipSelectView(frame: self.view.bounds)
alertView.selectType = .selectTypeSetAnimation alertView.selectType = .selectTypeSetAnimation
...@@ -64,6 +68,7 @@ class ChargeInfoViewController:BaseViewController { ...@@ -64,6 +68,7 @@ class ChargeInfoViewController:BaseViewController {
self.setAnimation() self.setAnimation()
} }
} }
}
}else { }else {
self.setAnimation() self.setAnimation()
} }
......
...@@ -43,7 +43,7 @@ func loadVideoItems() -> [ChargeDataModel]{ ...@@ -43,7 +43,7 @@ func loadVideoItems() -> [ChargeDataModel]{
do { do {
let cgImage = try imageGenerator.copyCGImage(at: time, actualTime: nil) let cgImage = try imageGenerator.copyCGImage(at: time, actualTime: nil)
let image = UIImage(cgImage: cgImage) let image = UIImage(cgImage: cgImage)
let model = ChargeDataModel(isFree: true, coverImage: image, url: url) let model = ChargeDataModel(isFree: false, coverImage: image, url: url)
dataArray.append(model) dataArray.append(model)
} catch { } catch {
print("获取视频图片出错: \(error.localizedDescription)") print("获取视频图片出错: \(error.localizedDescription)")
...@@ -51,9 +51,9 @@ func loadVideoItems() -> [ChargeDataModel]{ ...@@ -51,9 +51,9 @@ func loadVideoItems() -> [ChargeDataModel]{
} }
} }
// // 需要添加一张默认背景 // 需要添加一张默认背景
// let model = ChargeDataModel(isFree: true, coverImage: UIImage(named: "img_bj_battery")!, url: URL("")!) let model = ChargeDataModel(isFree: true, coverImage: UIImage(named: "img_bj_battery_default")!, url: URL("")!)
// dataArray.insert(model, at: 0) dataArray.insert(model, at: 0)
return dataArray return dataArray
} }
......
...@@ -21,12 +21,12 @@ class ChargeInfoBackView:UIView { ...@@ -21,12 +21,12 @@ class ChargeInfoBackView:UIView {
return sview return sview
}() }()
// lazy var animationView:LottieAnimationView = { lazy var animationView:LottieAnimationView = {
// let animationView = LottieAnimationView(name: "DefaultChargeLight") let animationView = LottieAnimationView(name: "DefaultChargeLight")
// animationView.frame = self.bounds animationView.frame = self.bounds
// animationView.loopMode = .loop animationView.loopMode = .loop
// return animationView return animationView
// }() }()
let timeLabel: UILabel = { let timeLabel: UILabel = {
let label = UILabel() let label = UILabel()
...@@ -65,17 +65,19 @@ class ChargeInfoBackView:UIView { ...@@ -65,17 +65,19 @@ class ChargeInfoBackView:UIView {
setupUI() setupUI()
self.videoPlayView.playVideo(with: model.url) self.videoPlayView.playVideo(with: model.url)
// // 表示这个是一张图片 // 表示这个是一张图片
// if model.url == URL(""){ if model.url == URL(""){
// self.videoPlayView.isHidden = true self.videoPlayView.isHidden = true
// self.animationView.isHidden = false self.animationView.isHidden = false
// self.animationView.play() self.backgroundColor = .black
// }else { self.animationView.play()
// // 这是视频 }else {
// self.videoPlayView.isHidden = false // 这是视频
// self.animationView.isHidden = true self.videoPlayView.isHidden = false
// self.videoPlayView.playVideo(with: model.url) self.animationView.isHidden = true
// } self.videoPlayView.playVideo(with: model.url)
self.backgroundColor = .clear
}
setupTimeUpdates() setupTimeUpdates()
...@@ -93,7 +95,7 @@ class ChargeInfoBackView:UIView { ...@@ -93,7 +95,7 @@ class ChargeInfoBackView:UIView {
self.addSubview(videoPlayView) self.addSubview(videoPlayView)
// self.addSubview(animationView) self.addSubview(animationView)
self.addSubview(timeLabel) self.addSubview(timeLabel)
......
...@@ -9,7 +9,7 @@ import UIKit ...@@ -9,7 +9,7 @@ import UIKit
class ChargeInfoSettingView:UIView { class ChargeInfoSettingView:UIView {
var settingCallBack:()->Void = {} var settingCallBack:(Bool)->Void = {pro in}
var model : ChargeDataModel? var model : ChargeDataModel?
...@@ -55,7 +55,7 @@ class ChargeInfoSettingView:UIView { ...@@ -55,7 +55,7 @@ class ChargeInfoSettingView:UIView {
@objc func settingBtnClick() { @objc func settingBtnClick() {
self.settingCallBack() self.settingCallBack(self.model?.isFree ?? false)
} }
......
...@@ -339,8 +339,6 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo ...@@ -339,8 +339,6 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}else { }else {
self.jumpToNextPage() self.jumpToNextPage()
} }
} }
/// 弹出广告 /// 弹出广告
......
...@@ -70,6 +70,10 @@ class HomeInfoViewController:BaseViewController { ...@@ -70,6 +70,10 @@ class HomeInfoViewController:BaseViewController {
} }
PhotoAndVideoMananger.deleteAssets(localIdentifiers: tempStringArray) {[weak self] in PhotoAndVideoMananger.deleteAssets(localIdentifiers: tempStringArray) {[weak self] in
guard let self else {return} guard let self else {return}
// 更新免费次数
updateFreeTimes()
// 删除缓存数据 // 删除缓存数据
PhotoDataManager.manager.removeDataWhenDeleteInPage(data: array as! [AssetModel]) PhotoDataManager.manager.removeDataWhenDeleteInPage(data: array as! [AssetModel])
...@@ -91,6 +95,17 @@ class HomeInfoViewController:BaseViewController { ...@@ -91,6 +95,17 @@ class HomeInfoViewController:BaseViewController {
} }
}) })
self.tablewView.deleteModel() self.tablewView.deleteModel()
func updateFreeTimes(){
// 删除成功后更新次数
var times = UserDefaults.standard.object(forKey: "saveAdvTimes") as! Int
if times > 0 {
// 如果免费次数大于0
times = times - 1
UserDefaults.standard.set(times, forKey: "saveAdvTimes")
}
}
} }
} }
} }
...@@ -98,100 +113,83 @@ class HomeInfoViewController:BaseViewController { ...@@ -98,100 +113,83 @@ class HomeInfoViewController:BaseViewController {
// 首先看是否订阅 // 首先看是否订阅
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
// 没有订阅 // 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array as? [AssetModel]
// 获取当前免费次数 // 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量 // 当免费次数用完以后,无论删除多少都需要弹出广告
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]! if freeCount <= 0 {
Print(freeDeleteCount) HomePayViewController.show {
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array as? [AssetModel]
if freeDeleteCount == 0 {
// 弹出单个删除类型 // 弹出单个删除类型
view.deleteType = .deletePhotoOne view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.type!) view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view) self.view.addSubview(view)
}
}else { }else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = array as! [AssetModel] let tempArray = array as! [AssetModel]
// 如果小于 if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount { if tempArray.count > freeDeleteCount {
// 弹出多个删除类型 // 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type!) view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view) self.view.addSubview(view)
} }
} }else {
view.deleteButtonClickCallback = {isMore in // 如果小于直接删除
if isMore == true {
// 先弹出充会员,然后结束之后弹广告
if self.type == .duplicates {
HomePayViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array) deleteOp(array)
} }
}
}else if self.type == .similar {
// 相似
HomeNoAdsViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array) }else{
// 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
} }
}else if tempArray.count > 1 && tempArray.count <= 5 {
// 如果是1张到5张之间,那么免费的张数是当前张数减一
freeDeleteCount = tempArray.count - 1
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
} }
}else{ }else{
HomeNoAdsViewController.show { // 如果只是一张,直接删除
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array) deleteOp(array)
} }
} }
} }
// 广告
}else{
if self.type == .duplicates {
HomePayViewController.show {
view.deleteButtonClickCallback = {isMore in
if isMore == true {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array) deleteOp(array)
} }
}else if self.type == .similar { } else {
// 相似
HomeNoAdsViewController.show {
deleteOp(array)
}
}else{
HomeNoAdsViewController.show {
deleteOp(array) deleteOp(array)
} }
} }
}
}
}else { }else {
deleteOp(array) deleteOp(array)
} }
// //
// if HomePayModel.share.isNoAd == false { // if HomePayModel.share.isNoAd == false {
// // 重复 // // 重复
......
...@@ -379,56 +379,87 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti ...@@ -379,56 +379,87 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
@objc func deleteButtonAction(){ @objc func deleteButtonAction(){
// 首先看是否订阅
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
// 没有订阅 // 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel
// 获取当前免费次数 // 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量 // 当免费次数用完以后,无论删除多少都需要弹出广告
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]! if freeCount <= 0 {
Print(freeDeleteCount) HomePayViewController.show {
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel
if freeDeleteCount == 0 {
// 弹出单个删除类型 // 弹出单个删除类型
view.deleteType = .deletePhotoOne view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.mediaType!) view.getOtherInfoByType(type: .Other)
self.view.addSubview(view) self.view.addSubview(view)
}
}else { }else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = self.selectedModel let tempArray = self.selectedModel
// 如果小于 if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount { if tempArray.count > freeDeleteCount {
// 弹出多个删除类型 // 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore view.deleteType = .deletePhotosMore
view.getOtherInfoByType(type: self.mediaType!) view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .Other)
self.view.addSubview(view) self.view.addSubview(view)
} }
}else {
// 如果小于直接删除
deleteAction()
} }
view.deleteButtonClickCallback = {isMore in
if isMore == true { }else{
// 先弹出充会员,然后结束之后弹广告 // 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .Other)
self.view.addSubview(view)
}
}else if tempArray.count > 1 && tempArray.count <= 5 {
// 如果是1张到5张之间,那么免费的张数是当前张数减一
freeDeleteCount = tempArray.count - 1
// 弹出多个删除类型
HomePayViewController.show { HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .Other)
self.view.addSubview(view)
}
}else{
// 如果只是一张,直接删除
deleteAction()
}
}
view.deleteButtonClickCallback = {isMore in
if isMore == true {
self.popAdverTisement() self.popAdverTisement()
// 广告看完再结束 // 广告看完再结束
AdvManager.shared.finisedCallBack = { AdvManager.shared.finisedCallBack = {
self.deleteAction() self.deleteAction()
} }
} } else {
// 广告
}else{
HomePayViewController.show {
self.deleteAction() self.deleteAction()
} }
} }
} }
}else { }else{
self.deleteAction() deleteAction()
} }
} }
/// 弹出广告 /// 弹出广告
......
...@@ -321,52 +321,83 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie ...@@ -321,52 +321,83 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
@objc func deleteButtonAction(){ @objc func deleteButtonAction(){
// 首先看是否订阅
if HomePayModel.share.isNoAd == false { if HomePayModel.share.isNoAd == false {
// 获取当前免费次数 // 没有订阅
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
Print(freeDeleteCount)
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds) let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel view.dataSource = self.selectedModel
if freeDeleteCount == 0 {
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
// 弹出单个删除类型 // 弹出单个删除类型
view.deleteType = .deletePhotoOne view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: .videos) view.getOtherInfoByType(type: .videos)
self.view.addSubview(view) self.view.addSubview(view)
}
}else { }else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = self.selectedModel let tempArray = self.selectedModel
// 如果小于 if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount { if tempArray.count > freeDeleteCount {
// 弹出多个删除类型 // 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .videos) view.getOtherInfoByType(type: .videos)
self.view.addSubview(view) self.view.addSubview(view)
} }
}else {
// 如果小于直接删除
deleteAction()
} }
view.deleteButtonClickCallback = {isMore in
if isMore == true { }else{
// 先弹出充会员,然后结束之后弹广告 // 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
HomePayViewController.show { HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .videos)
self.view.addSubview(view)
}
}else if tempArray.count > 1 && tempArray.count <= 5 {
// 如果是1张到5张之间,那么免费的张数是当前张数减一
freeDeleteCount = tempArray.count - 1
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .videos)
self.view.addSubview(view)
}
}else{
// 如果只是一张,直接删除
deleteAction()
}
}
view.deleteButtonClickCallback = {isMore in
if isMore == true {
self.popAdverTisement() self.popAdverTisement()
// 广告看完再结束 // 广告看完再结束
AdvManager.shared.finisedCallBack = { AdvManager.shared.finisedCallBack = {
self.deleteAction() self.deleteAction()
} }
} } else {
// 广告
}else{
HomePayViewController.show {
self.deleteAction() self.deleteAction()
} }
} }
} }
}else { }else{
self.deleteAction() deleteAction()
} }
} }
......
...@@ -59,8 +59,6 @@ class HomeViewController:BaseViewController { ...@@ -59,8 +59,6 @@ class HomeViewController:BaseViewController {
homeView?.titleCallBack = {[weak self] model,type in homeView?.titleCallBack = {[weak self] model,type in
guard let self else {return} guard let self else {return}
self.popAdverTisement()
DispatchQueue.main.async { DispatchQueue.main.async {
let vc:HomeInfoViewController = HomeInfoViewController(ids: model.assets , type: type,titleText: model.folderName) let vc:HomeInfoViewController = HomeInfoViewController(ids: model.assets , type: type,titleText: model.folderName)
self.navigationController?.pushViewController(vc, animated: true) self.navigationController?.pushViewController(vc, animated: true)
...@@ -69,7 +67,6 @@ class HomeViewController:BaseViewController { ...@@ -69,7 +67,6 @@ class HomeViewController:BaseViewController {
homeView?.otherItemCallBack = {[weak self] model,otherItemRow in homeView?.otherItemCallBack = {[weak self] model,otherItemRow in
guard let self else {return} guard let self else {return}
self.popAdverTisement()
if otherItemRow == 0 { if otherItemRow == 0 {
DispatchQueue.main.async { DispatchQueue.main.async {
let vc:HomeVideoDetailController = HomeVideoDetailController(model: model) let vc:HomeVideoDetailController = HomeVideoDetailController(model: model)
......
...@@ -39,6 +39,11 @@ class HomePayViewController:UIViewController { ...@@ -39,6 +39,11 @@ class HomePayViewController:UIViewController {
homePayView?.playAnimationWithDelay() homePayView?.playAnimationWithDelay()
} }
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
doneBlock()
}
private func addViews() { private func addViews() {
homePayView = HomePayView(frame: view.bounds) homePayView = HomePayView(frame: view.bounds)
view.addSubview(homePayView!) view.addSubview(homePayView!)
...@@ -50,7 +55,7 @@ class HomePayViewController:UIViewController { ...@@ -50,7 +55,7 @@ class HomePayViewController:UIViewController {
switch operstatus { switch operstatus {
case .close: case .close:
self.dismiss(animated: true) self.dismiss(animated: true)
doneBlock() // doneBlock()
default: default:
break break
} }
......
...@@ -234,6 +234,9 @@ class SecretViewController: BaseViewController { ...@@ -234,6 +234,9 @@ class SecretViewController: BaseViewController {
view.addSubview(b) view.addSubview(b)
b.callback = { [weak self] in b.callback = { [weak self] in
guard let self = self else { return } guard let self = self else { return }
// 先弹出广告
popAdverTisement()
if b.state == .add { if b.state == .add {
self.AddAction.show(); self.AddAction.show();
self.AddAction.callback = { idx in self.AddAction.callback = { idx in
...@@ -242,6 +245,12 @@ class SecretViewController: BaseViewController { ...@@ -242,6 +245,12 @@ class SecretViewController: BaseViewController {
}else{ }else{
self.deleteData() self.deleteData()
} }
func popAdverTisement(){
if AdvManager.shared.advTimeAfterInAPP <= 0 {
AdvManager.shared.showInterstitialAd(vc: self)
}
}
} }
return b return b
}() }()
......
...@@ -16,53 +16,27 @@ class Singleton { ...@@ -16,53 +16,27 @@ class Singleton {
var resourceModel : [ResourceModel] = [] var resourceModel : [ResourceModel] = []
// 当日的免费次数
var advFreeTimes : Int = {
// 获取存储的时间
let saveTime = UserDefaults.standard.object(forKey: "saveTime")
if saveTime == nil {
UserDefaults.standard.set(Date(), forKey: "saveTime")
UserDefaults.standard.set(AdvManager.shared.defaultFreeTimes, forKey: "saveAdvTimes")
return AdvManager.shared.defaultFreeTimes
}else {
// 判断时间是不是同一天
let calendar = Calendar.current
let isSameDay = calendar.isDate(saveTime as! Date, inSameDayAs: Date())
if isSameDay {
// 如果是同一天
var times = UserDefaults.standard.object(forKey: "saveAdvTimes") as! Int
if times > 0 {
// 如果免费次数大于0
times = times - 1
UserDefaults.standard.set(times, forKey: "saveAdvTimes")
}
// 如果等于0 那啥也不做
return times
}else{
// 如果不是同一天,重置次数
UserDefaults.standard.set(Date(), forKey: "saveTime")
UserDefaults.standard.set(AdvManager.shared.defaultFreeTimes, forKey: "saveAdvTimes")
return AdvManager.shared.defaultFreeTimes
}
}
}()
func startCountdown(completion: @escaping () -> Void) { func startCountdown(completion: @escaping () -> Void) {
AdvManager.shared.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in
guard self != nil else { return } if AdvManager.shared.timer != nil {
if AdvManager.shared.advTimeAfterInAPP > 0 { return
}
let queue = DispatchQueue.global()
let timer = DispatchSource.makeTimerSource(queue: queue)
AdvManager.shared.timer = timer
AdvManager.shared.timer?.schedule(deadline: .now(), repeating: .seconds(1))
AdvManager.shared.timer?.setEventHandler {
AdvManager.shared.advTimeAfterInAPP -= 1 AdvManager.shared.advTimeAfterInAPP -= 1
if AdvManager.shared.advTimeAfterInAPP >= 0 {
print("剩余时间: \(AdvManager.shared.advTimeAfterInAPP) 秒")
} else { } else {
AdvManager.shared.timer?.invalidate() print("倒计时结束!")
AdvManager.shared.timer?.cancel()
completion() completion()
AdvManager.shared.timer = nil
} }
} }
} timer.resume()
func stopCountdown() {
AdvManager.shared.timer?.invalidate()
} }
} }
......
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