Commit 37ce2e23 authored by CZ1004's avatar CZ1004

广告和优化

parent d95f378d
......@@ -22,8 +22,35 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 插页广告
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张
let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0]
......@@ -31,7 +58,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 进入页面之后30秒
var advTimeAfterInAPP : Int = 30
var timer: Timer?
var timer: DispatchSourceTimer?
/// 能请求广告
......
......@@ -6,6 +6,7 @@
//
import Foundation
import SnapKit
enum TipDeleteType {
case deletePhotosMore
......@@ -35,18 +36,19 @@ class AdvTipDeleteView : UIView {
var deleteButtonClickCallback : (Bool)->Void = {isMore in }
var deleteType : TipDeleteType?
// getOtherInfoByType()
// 默认免费删除
var freeDeleteCount : Int = 0
var dataSource : [AssetModel]?
// UIView.transition(with: self.collectionView, duration: 0.3, options: .transitionCrossDissolve, animations: {
// self.collectionView.reloadData()
// }, completion: nil)
var dataSource : [AssetModel]?
var tipDeleteModel : AdvTipModel = AdvTipModel(titleText: "", detailTitleText: "", showLessButton: false, deleteMoreText: "", deleteLessText: "")
private var heightConstraint: Constraint?
lazy var tipView : UIView = {
......@@ -83,7 +85,7 @@ class AdvTipDeleteView : UIView {
}()
lazy var collectionView : UICollectionView = {
let layout = UICollectionViewFlowLayout()
let layout = CenteredGroupCollectionViewLayout()
layout.scrollDirection = .horizontal
layout.minimumInteritemSpacing = 8
let collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
......@@ -137,7 +139,7 @@ class AdvTipDeleteView : UIView {
self.tipView.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.equalTo(345)
make.height.equalTo(410)
heightConstraint = make.height.equalTo(410).constraint
}
self.closeButton.snp.makeConstraints { make in
......@@ -189,16 +191,11 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
let photosCount = self.dataSource!.count > 25 ? 25 : self.dataSource?.count
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"
deleteLessText = "Delete Only \(self.freeDeleteCount) Videos"
}else {
deleteLessText = "Delete Only \(freeDeleteCount) Photos"
deleteLessText = "Delete Only \(self.freeDeleteCount) Photos"
}
......@@ -241,6 +238,24 @@ extension AdvTipDeleteView : UICollectionViewDataSource, UICollectionViewDelegat
self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, 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
}
@objc func deleteMoreButtonSelect() {
self.removeFromSuperview()
deleteButtonClickCallback(true)
}
@objc func deleteLessButtonSelect() {
self.removeFromSuperview()
deleteButtonClickCallback(false)
}
......@@ -299,3 +316,34 @@ class ImageCell: UICollectionViewCell {
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 {
sview.flag = self.flag
sview.isHidden = type == .setting ? false : true
sview.settingCallBack = {
if HomePayModel.share.isNoAd == false {
sview.settingCallBack = {isFree in
// 如果是pro用户或者是免费的
if HomePayModel.share.isNoAd == false && isFree != true {
// 弹出内购页面
HomePayViewController.show {
// 弹出提示框
let alertView = AdvTipSelectView(frame: self.view.bounds)
alertView.selectType = .selectTypeSetAnimation
......@@ -64,6 +68,7 @@ class ChargeInfoViewController:BaseViewController {
self.setAnimation()
}
}
}
}else {
self.setAnimation()
}
......
......@@ -43,7 +43,7 @@ func loadVideoItems() -> [ChargeDataModel]{
do {
let cgImage = try imageGenerator.copyCGImage(at: time, actualTime: nil)
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)
} catch {
print("获取视频图片出错: \(error.localizedDescription)")
......@@ -51,9 +51,9 @@ func loadVideoItems() -> [ChargeDataModel]{
}
}
// // 需要添加一张默认背景
// let model = ChargeDataModel(isFree: true, coverImage: UIImage(named: "img_bj_battery")!, url: URL("")!)
// dataArray.insert(model, at: 0)
// 需要添加一张默认背景
let model = ChargeDataModel(isFree: true, coverImage: UIImage(named: "img_bj_battery_default")!, url: URL("")!)
dataArray.insert(model, at: 0)
return dataArray
}
......
......@@ -21,12 +21,12 @@ class ChargeInfoBackView:UIView {
return sview
}()
// lazy var animationView:LottieAnimationView = {
// let animationView = LottieAnimationView(name: "DefaultChargeLight")
// animationView.frame = self.bounds
// animationView.loopMode = .loop
// return animationView
// }()
lazy var animationView:LottieAnimationView = {
let animationView = LottieAnimationView(name: "DefaultChargeLight")
animationView.frame = self.bounds
animationView.loopMode = .loop
return animationView
}()
let timeLabel: UILabel = {
let label = UILabel()
......@@ -65,17 +65,19 @@ class ChargeInfoBackView:UIView {
setupUI()
self.videoPlayView.playVideo(with: model.url)
// // 表示这个是一张图片
// if model.url == URL(""){
// self.videoPlayView.isHidden = true
// self.animationView.isHidden = false
// self.animationView.play()
// }else {
// // 这是视频
// self.videoPlayView.isHidden = false
// self.animationView.isHidden = true
// self.videoPlayView.playVideo(with: model.url)
// }
// 表示这个是一张图片
if model.url == URL(""){
self.videoPlayView.isHidden = true
self.animationView.isHidden = false
self.backgroundColor = .black
self.animationView.play()
}else {
// 这是视频
self.videoPlayView.isHidden = false
self.animationView.isHidden = true
self.videoPlayView.playVideo(with: model.url)
self.backgroundColor = .clear
}
setupTimeUpdates()
......@@ -93,7 +95,7 @@ class ChargeInfoBackView:UIView {
self.addSubview(videoPlayView)
// self.addSubview(animationView)
self.addSubview(animationView)
self.addSubview(timeLabel)
......
......@@ -9,7 +9,7 @@ import UIKit
class ChargeInfoSettingView:UIView {
var settingCallBack:()->Void = {}
var settingCallBack:(Bool)->Void = {pro in}
var model : ChargeDataModel?
......@@ -55,7 +55,7 @@ class ChargeInfoSettingView:UIView {
@objc func settingBtnClick() {
self.settingCallBack()
self.settingCallBack(self.model?.isFree ?? false)
}
......
......@@ -339,8 +339,6 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}else {
self.jumpToNextPage()
}
}
/// 弹出广告
......
......@@ -70,6 +70,10 @@ class HomeInfoViewController:BaseViewController {
}
PhotoAndVideoMananger.deleteAssets(localIdentifiers: tempStringArray) {[weak self] in
guard let self else {return}
// 更新免费次数
updateFreeTimes()
// 删除缓存数据
PhotoDataManager.manager.removeDataWhenDeleteInPage(data: array as! [AssetModel])
......@@ -91,6 +95,17 @@ class HomeInfoViewController:BaseViewController {
}
})
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 {
// 首先看是否订阅
if HomePayModel.share.isNoAd == false {
// 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array as? [AssetModel]
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 获取次数对应的删除照片数量
let freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
Print(freeDeleteCount)
// 如果数量等于0
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = array as? [AssetModel]
if freeDeleteCount == 0 {
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
}
}else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = array as! [AssetModel]
// 如果小于
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: self.type!)
self.view.addSubview(view)
}
}
view.deleteButtonClickCallback = {isMore in
if isMore == true {
// 先弹出充会员,然后结束之后弹广告
if self.type == .duplicates {
HomePayViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
}else {
// 如果小于直接删除
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{
HomeNoAdsViewController.show {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
// 如果只是一张,直接删除
deleteOp(array)
}
}
}
// 广告
}else{
if self.type == .duplicates {
HomePayViewController.show {
view.deleteButtonClickCallback = {isMore in
if isMore == true {
self.popAdverTisement()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
deleteOp(array)
}
}else if self.type == .similar {
// 相似
HomeNoAdsViewController.show {
deleteOp(array)
}
}else{
HomeNoAdsViewController.show {
} else {
deleteOp(array)
}
}
}
}
}else {
deleteOp(array)
}
//
// if HomePayModel.share.isNoAd == false {
// // 重复
......
......@@ -379,56 +379,87 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
@objc func deleteButtonAction(){
// 首先看是否订阅
if HomePayModel.share.isNoAd == false {
// 没有订阅
let view : AdvTipDeleteView = AdvTipDeleteView(frame: self.view.bounds)
view.dataSource = self.selectedModel
// 获取当前免费次数
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 {
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: self.mediaType!)
view.getOtherInfoByType(type: .Other)
self.view.addSubview(view)
}
}else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = self.selectedModel
// 如果小于
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
HomePayViewController.show {
view.deleteType = .deletePhotosMore
view.getOtherInfoByType(type: self.mediaType!)
view.freeDeleteCount = freeDeleteCount
view.getOtherInfoByType(type: .Other)
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 {
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()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
self.deleteAction()
}
}
// 广告
}else{
HomePayViewController.show {
} else {
self.deleteAction()
}
}
}
}else {
self.deleteAction()
}else{
deleteAction()
}
}
/// 弹出广告
......
......@@ -321,52 +321,83 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
@objc func deleteButtonAction(){
// 首先看是否订阅
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)
view.dataSource = self.selectedModel
if freeDeleteCount == 0 {
// 获取当前免费次数
let freeCount = AdvManager.shared.defaultFreeTimes
// 当免费次数用完以后,无论删除多少都需要弹出广告
if freeCount <= 0 {
HomePayViewController.show {
// 弹出单个删除类型
view.deleteType = .deletePhotoOne
view.getOtherInfoByType(type: .videos)
self.view.addSubview(view)
}
}else {
// 获取次数对应的删除照片数量
var freeDeleteCount = AdvManager.shared.advDeleteResouceDic[freeCount]!
let tempArray = self.selectedModel
// 如果小于
if freeCount > 1 {
// 如果是前两次,可以免费删除5张照片
if tempArray.count > freeDeleteCount {
// 弹出多个删除类型
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 {
// 先弹出充会员,然后结束之后弹广告
}else{
// 如果免费次数等于1,也就是第三次。看照片删除的数量
// 如果当前删除的照片大于5
if tempArray.count > 5 {
freeDeleteCount = 5
// 弹出多个删除类型
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()
// 广告看完再结束
AdvManager.shared.finisedCallBack = {
self.deleteAction()
}
}
// 广告
}else{
HomePayViewController.show {
} else {
self.deleteAction()
}
}
}
}else {
self.deleteAction()
}else{
deleteAction()
}
}
......
......@@ -59,8 +59,6 @@ class HomeViewController:BaseViewController {
homeView?.titleCallBack = {[weak self] model,type in
guard let self else {return}
self.popAdverTisement()
DispatchQueue.main.async {
let vc:HomeInfoViewController = HomeInfoViewController(ids: model.assets , type: type,titleText: model.folderName)
self.navigationController?.pushViewController(vc, animated: true)
......@@ -69,7 +67,6 @@ class HomeViewController:BaseViewController {
homeView?.otherItemCallBack = {[weak self] model,otherItemRow in
guard let self else {return}
self.popAdverTisement()
if otherItemRow == 0 {
DispatchQueue.main.async {
let vc:HomeVideoDetailController = HomeVideoDetailController(model: model)
......
......@@ -39,6 +39,11 @@ class HomePayViewController:UIViewController {
homePayView?.playAnimationWithDelay()
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
doneBlock()
}
private func addViews() {
homePayView = HomePayView(frame: view.bounds)
view.addSubview(homePayView!)
......@@ -50,7 +55,7 @@ class HomePayViewController:UIViewController {
switch operstatus {
case .close:
self.dismiss(animated: true)
doneBlock()
// doneBlock()
default:
break
}
......
......@@ -234,6 +234,9 @@ class SecretViewController: BaseViewController {
view.addSubview(b)
b.callback = { [weak self] in
guard let self = self else { return }
// 先弹出广告
popAdverTisement()
if b.state == .add {
self.AddAction.show();
self.AddAction.callback = { idx in
......@@ -242,6 +245,12 @@ class SecretViewController: BaseViewController {
}else{
self.deleteData()
}
func popAdverTisement(){
if AdvManager.shared.advTimeAfterInAPP <= 0 {
AdvManager.shared.showInterstitialAd(vc: self)
}
}
}
return b
}()
......
......@@ -16,53 +16,27 @@ class Singleton {
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) {
AdvManager.shared.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { [weak self] _ in
guard self != nil else { return }
if AdvManager.shared.advTimeAfterInAPP > 0 {
if AdvManager.shared.timer != nil {
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
if AdvManager.shared.advTimeAfterInAPP >= 0 {
print("剩余时间: \(AdvManager.shared.advTimeAfterInAPP) 秒")
} else {
AdvManager.shared.timer?.invalidate()
print("倒计时结束!")
AdvManager.shared.timer?.cancel()
completion()
AdvManager.shared.timer = nil
}
}
}
func stopCountdown() {
AdvManager.shared.timer?.invalidate()
timer.resume()
}
}
......
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