Commit 4bb2bced authored by CZ1004's avatar CZ1004

【优化】广告更新

parent 8c1d49c2
......@@ -36,6 +36,9 @@ class AdvManager : NSObject, FullScreenContentDelegate {
// 看完广告的回调
var finisedCallBack:()->Void = {}
// 广告都没播放成功回调
var failueFinishedCallBack : ()->Void = {}
// 激励插页广告
var rewardedInterstitialAd: RewardedInterstitialAd?
......@@ -227,7 +230,9 @@ class AdvManager : NSObject, FullScreenContentDelegate {
vc.present(alert, animated: true, completion: nil)
// 1 秒后关闭弹窗
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true, completion: nil)
alert.dismiss(animated: true) {
self.failueFinishedCallBack()
}
}
return
}
......
......@@ -110,7 +110,6 @@ class CompressCustomHeaderView: UICollectionReusableView{
self.titlelabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(0)
make.top.equalToSuperview().offset(14)
make.width.equalTo(96 * RScreenW())
make.height.equalTo(28)
}
......
......@@ -60,24 +60,7 @@ class MergeButtonView : UIView {
extension MergeButtonView {
@objc func merge (){
if IAPManager.share.isSubscribed == false {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc)
AdvManager.shared.finisedCallBack = {
self.alertWhenMergeContact()
}
}else {
self.alertWhenMergeContact()
}
}else {
self.alertWhenMergeContact()
}
}else {
self.alertWhenMergeContact()
}
self.alertWhenMergeContact()
}
fileprivate func showMeegeAlert(_ self: MergeButtonView) {
......
......@@ -56,7 +56,24 @@ class MergePreButtonView : UIView {
}
extension MergePreButtonView {
@objc func mergePre (){
self.mergePreCallBack()
@objc func mergePre(){
if IAPManager.share.isSubscribed == false {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc)
AdvManager.shared.finisedCallBack = {
self.mergePreCallBack()
}
}else {
self.mergePreCallBack()
}
}else {
self.mergePreCallBack()
}
}else {
self.mergePreCallBack()
}
}
}
......@@ -227,12 +227,13 @@ class HomePhotosDetailViewController : BaseViewController {
make.bottom.equalToSuperview().offset(0)
make.height.equalTo(78 + safeHeight)
}
self.trashSubView.type = self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot
// 判断垃圾桶有没有数据
let array = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot)
self.trashSubView.resourceCountlabel.text = String(array.count)
self.trashSubView.isHidden = array.count <= 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0 || self.resourceData.count <= 0
self.deleteButtonView.isHidden = array.count > 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0
// 改变collection的位置
if array.count > 0 {
......@@ -240,7 +241,6 @@ class HomePhotosDetailViewController : BaseViewController {
}else{
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
}
self.videoDetailNavView?.startSelectButton.isHidden = (self.resourceData.count <= 0)
}
}
......@@ -303,11 +303,10 @@ class HomePhotosDetailViewController : BaseViewController {
}
self.trashSubView.clearTashDataCallBack = {[weak self] in
guard let self else {return}
// 清除垃圾桶数据
TrashDataManager.clearTrashData(mediaType: self.mediaType == PhotsFileType.Other ? TrashTypeEnum.other : TrashTypeEnum.shot) {[weak self] in
guard let self else {return}
DispatchQueue.main.async {
self.addTrashView()
}
}
self.addListener()
......
......@@ -103,6 +103,7 @@ class HomeVideoDetailController :BaseViewController {
let view = TrashSubView()
view.backgroundColor = UIColor.colorWithHex(hexStr: "#F2F6FC")
view.tipLabel.text = "The video in the trash can"
view.type = .video
view.isHidden = true
return view
}()
......@@ -284,9 +285,7 @@ class HomeVideoDetailController :BaseViewController {
}
self.trashSubView.clearTashDataCallBack = {[weak self] in
guard let self else {return}
// 清除垃圾桶数据
TrashDataManager.clearTrashData(mediaType: TrashTypeEnum.video) {[weak self] in
guard let self else {return}
DispatchQueue.main.async {
self.addTrashView()
}
}
......@@ -309,7 +308,7 @@ class HomeVideoDetailController :BaseViewController {
self.trashSubView.resourceCountlabel.text = String(array.count)
self.trashSubView.isHidden = array.count <= 0
self.deleteButtonView.isHidden = array.count > 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0
self.videoDetailNavView?.startSelectButton.isHidden = array.count > 0 || self.resourceData.count <= 0
// 改变collection的位置
if array.count > 0 {
......@@ -317,7 +316,6 @@ class HomeVideoDetailController :BaseViewController {
}else{
self.collectionView.frame = CGRect(x: marginLR, y: self.videoDetailNavView!.height, width: self.view.width - 2 * marginLR, height: self.view.height - self.videoDetailNavView!.height)
}
self.videoDetailNavView?.startSelectButton.isHidden = (self.resourceData.count <= 0)
}
}
......
......@@ -192,6 +192,11 @@ class HomeViewController:BaseViewController {
AdvManager.shared.finisedCallBack = {
self.junmToModule(cIndex, self)
}
AdvManager.shared.failueFinishedCallBack = {
// 首页特殊要求广告没准备好也需要跳转
self.junmToModule(cIndex, self)
}
}
}
view.addSubview(homeView!)
......
......@@ -178,19 +178,20 @@ class PhotoRemoveViewController: BaseViewController {
setupViews()
self.view.addSubview(self.trashSubView)
self.trashSubView.type = self.mediaType
self.trashSubView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
self.bottomConstraint = make.bottom.equalToSuperview().offset(78 + safeHeight).constraint
make.height.equalTo(78 + safeHeight)
}
self.trashSubView.clearTashDataCallBack = {[weak self] in
guard let self else {return}
// 清除垃圾桶数据
TrashDataManager.clearTrashData(mediaType: self.mediaType) {[weak self] in
guard let self else {return}
DispatchQueue.main.async {
self.showCurrentPageUIWhenTashDataChanged()
}
}
self.trashSubView.presentTashDetailViewClickCallBack = {[weak self] in
guard let self else {return}
......
......@@ -103,29 +103,180 @@ class TrashSubView: UIView {
extension TrashSubView {
@objc func emptyButtonAction(){
if IAPManager.share.isSubscribed == false {
HomePayViewController.show {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc)
AdvManager.shared.finisedCallBack = {
self.clearTashDataCallBack()
if let vc = self.responderViewController(){
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.type)
if data.count <= 0 {
return
}
// 首先看是否订阅
if IAPManager.share.isSubscribed == false {
// 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: vc.view.bounds)
view.dataSource = data
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
Print("免费次数----\(freeCount)")
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
// 弹出单个删除类型
view.deleteType = self.type == .video ? .deleteVideoOne : .deletePhotoOne
view.getOtherInfoByType(type: self.type == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else {
self.delMethod(needUpdateFreeTimes: true)
}
}else {
self.clearTashDataCallBack()
}
}else {
self.clearTashDataCallBack()
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = data
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.type == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else {
// 如果小于直接删除
HomePayViewController.show {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else{
// 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.type == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}
}else if tempArray.count > 1 && tempArray.count <= 5 {
// 如果是1张到5张之间,那么免费的张数是当前张数减一
freeDeleteCount = tempArray.count - 1
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.type == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}
}else{
// 如果只是一张,直接删除
HomePayViewController.show {
self.delMethod(needUpdateFreeTimes: true)
}
}
}
}
view.deleteButtonClickCallback = {isMore,deleteCount in
if let vc = self.responderViewController() {
vc.view.hideBlur()
}
if deleteCount < 0 {
return
}
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.type)
if data.count <= 0 {
return
}
if isMore == true {
if IAPManager.share.isSubscribed == false {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: self.type,data: tempArray) {
self.clearTashDataCallBack()
}
}
}else{
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: self.type,data: tempArray) {
self.clearTashDataCallBack()
}
}
} else {
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: self.type,data: tempArray) {
self.clearTashDataCallBack()
self.updateFreeTimes()
}
}
}
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}else {
self.clearTashDataCallBack()
}
}
@objc func tapHandle(){
self.presentTashDetailViewClickCallBack()
}
// MARK: 广告相关
func delMethod(needUpdateFreeTimes:Bool){
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: self.type)
if data.count > 0 {
TrashDataManager.clearTrashData(mediaType: self.type,data: []) {
if needUpdateFreeTimes {
self.updateFreeTimes()
}
self.clearTashDataCallBack()
}
}
}
/// 弹出广告
func popAdverTisement(){
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc)
}
}
// 显示弹出框
func showPopView(popView: AdvTipDeleteView){
self.responderViewController()?.view.showBlur()
self.responderViewController()?.view.addSubview(popView)
}
func updateFreeTimes(){
// 删除成功后更新次数
var times = UserDefaults.standard.object(forKey: "saveAdvTimes") as! Int
if times > 0 {
// 如果免费次数大于0
times = times - 1
UserDefaults.standard.set(times, forKey: "saveAdvTimes")
}
}
}
......@@ -371,6 +371,7 @@ extension PMShowImgVideoController : UICollectionViewDelegate,UICollectionViewDa
}else{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: PMShowVideoCellID, for: indexPath) as! PMShowVideoCell
cell.isCurrent = selectSet.contains(indexPath.row)
cell.bestResultButton.isHidden = true
cell.playURL = showName
cell.reload()
cell.callblock = {[weak self] in
......
......@@ -188,28 +188,166 @@ extension TrashViewController:UIScrollViewDelegate{
@objc func delBtnAction(){
let info = self.getTypeByCurrentPage(pageIndex: currentPage)
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: info.0)
if data.count <= 0 {
return
}
// 首先看是否订阅
if IAPManager.share.isSubscribed == false {
HomePayViewController.show {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
AdvManager.shared.showInterstitialAd(vc: self)
AdvManager.shared.finisedCallBack = {
self.delMethod()
// 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = data
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
Print("免费次数----\(freeCount)")
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
// 弹出单个删除类型
view.deleteType = self.currentType == .video ? .deleteVideoOne : .deletePhotoOne
view.getOtherInfoByType(type: self.currentType == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = data
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.currentType == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.currentType == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else {
// 如果小于直接删除
HomePayViewController.show {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else{
// 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.currentType == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.currentType == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}
}else if tempArray.count > 1 && tempArray.count <= 5 {
// 如果是1张到5张之间,那么免费的张数是当前张数减一
freeDeleteCount = tempArray.count - 1
// 弹出多个删除类型
HomePayViewController.show {
if IAPManager.share.isSubscribed == false{
view.deleteType = self.currentType == .video ? .deleteVideosMore : .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.currentType == TrashTypeEnum.video ? PhotsFileType.videos : PhotsFileType.Other)
self.showPopView(popView: view)
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}
}else{
// 如果只是一张,直接删除
HomePayViewController.show {
self.delMethod(needUpdateFreeTimes: true)
}
}
}else {
self.delMethod()
}
}
}else {
self.delMethod()
view.deleteButtonClickCallback = {isMore,deleteCount in
self.view.hideBlur()
if deleteCount < 0 {
return
}
let info = self.getTypeByCurrentPage(pageIndex: self.currentPage)
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: info.0)
if data.count <= 0 {
return
}
if isMore == true {
if IAPManager.share.isSubscribed == false {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: info.0,data: tempArray) {
info.1.dataSource.removeAll(where: {tempArray.map({$0.localIdentifier}).contains($0.localIdentifier)})
}
}
}else{
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: info.0,data: tempArray) {
info.1.dataSource.removeAll(where: {tempArray.map({$0.localIdentifier}).contains($0.localIdentifier)})
}
}
} else {
let tempArray = Array(data.prefix(deleteCount))
TrashDataManager.clearTrashData(mediaType: info.0,data: tempArray) {
self.updateFreeTimes()
info.1.dataSource.removeAll(where: {tempArray.map({$0.localIdentifier}).contains($0.localIdentifier)})
}
}
}
}else{
self.delMethod(needUpdateFreeTimes: true)
}
}
func delMethod(){
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
}
// 显示弹出框
func showPopView(popView: AdvTipDeleteView){
self.view.showBlur()
self.view.addSubview(popView)
}
func updateFreeTimes(){
// 删除成功后更新次数
var times = UserDefaults.standard.object(forKey: "saveAdvTimes") as! Int
if times > 0 {
// 如果免费次数大于0
times = times - 1
UserDefaults.standard.set(times, forKey: "saveAdvTimes")
}
}
func delMethod(needUpdateFreeTimes:Bool){
let info = self.getTypeByCurrentPage(pageIndex: currentPage)
let data = TrashDataManager.getCurrentMediaTypeTrashData(mediaType: info.0)
if data.count > 0 {
TrashDataManager.clearTrashData(mediaType: info.0) {
TrashDataManager.clearTrashData(mediaType: info.0,data: []) {
if needUpdateFreeTimes {
self.updateFreeTimes()
}
info.1.dataSource.removeAll()
}
}
......
......@@ -17,17 +17,23 @@ class TrashDataManager {
comlete()
}
/// 清除当前类型垃圾桶的所有数据
static func clearTrashData(mediaType: TrashTypeEnum?, comlete:@escaping ()->Void){
static func clearTrashData(mediaType: TrashTypeEnum?,data:[AssetModel], comlete:@escaping ()->Void){
let trashData = self.getCurrentMediaTypeTrashData(mediaType: mediaType)
if trashData.count > 0 {
PhotoAndVideoMananger.deleteAssets(localIdentifiers: trashData.map({$0.localIdentifier})) {
let identifierArray : [String] = data.count == 0 ? trashData.map({$0.localIdentifier}) : data.map({$0.localIdentifier})
PhotoAndVideoMananger.deleteAssets(localIdentifiers: identifierArray) {
// 清空单利和数据库的数据
clearCurrentMediaTypeTrashSigtonData(mediaType: mediaType)
clearCurrentMediaTypeTrashDBData(mediaType: mediaType)
if data.count > 0 {
for item in data {
clearCurrentMediaTypeTrashSigtonData(mediaType: mediaType,identifier: item.localIdentifier)
clearCurrentMediaTypeTrashDBData(mediaType: mediaType,identifier: item.localIdentifier)
}
}else {
clearCurrentMediaTypeTrashSigtonData(mediaType: mediaType)
clearCurrentMediaTypeTrashDBData(mediaType: mediaType)
}
// 删除完成之后回调
PhotoManager.shared.removeDataWhenDeleteInPage(data: trashData)
comlete()
......
......@@ -162,26 +162,21 @@ extension EmailContentView :UITableViewDelegate,UITableViewDataSource{
if IAPManager.share.isSubscribed == false {
// 弹出内购页面
HomePayViewController.show {
// 再次判断下
if IAPManager.share.isSubscribed == false {
// 弹出提示框
let alertView = AdvTipSelectView()
alertView.selectType = .selectTypeSetAnimation
alertView.getOtherInfoByType()
self.showBlur()
self.responderViewController()?.present(alertView, animated: true)
alertView.selectClickCallback = {isSure in
alertView.dismiss(animated: true)
self.hideBlur()
if isSure {
self.popAdverTisement()
AdvManager.shared.finisedCallBack = {
callblock()
}
// 弹出提示框
let alertView = AdvTipSelectView()
alertView.selectType = .selectTypeSetAnimation
alertView.getOtherInfoByType()
self.showBlur()
self.responderViewController()?.present(alertView, animated: true)
alertView.selectClickCallback = {isSure in
alertView.dismiss(animated: true)
self.hideBlur()
if isSure {
self.popAdverTisement()
AdvManager.shared.finisedCallBack = {
callblock()
}
}
}else{
callblock()
}
}
}else {
......
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