Commit 85f5dc2e authored by yqz's avatar yqz

Merge branch 'dev_main' into yQz0507

* dev_main:
  fix bugs
  【修复】修复压缩进程BUG
  【优化】1、相似项数据错乱2、压缩过程返回

# Conflicts:
#	PhoneManager/Class/Page/Settings/ViewController/SettingViewController.swift
parents c07b421c 47c88f21
......@@ -821,7 +821,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 2.2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
......@@ -870,7 +870,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.1.0;
MARKETING_VERSION = 2.2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
......
......@@ -12,6 +12,7 @@ import AppTrackingTransparency
import AdSupport
import AppLovinSDK
import FBAudienceNetwork
import SVProgressHUD
enum AdvertisementType {
case rewardedInterstitialType
......@@ -33,9 +34,13 @@ class AdvManager : NSObject, FullScreenContentDelegate {
var adFromName:String = ""
var adFromVC:String = ""
// 看完广告的回调
var finisedCallBack:()->Void = {}
var serctCallBack:()->Void = {}
// 广告都没播放成功回调
var failueFinishedCallBack : ()->Void = {}
......@@ -45,10 +50,16 @@ class AdvManager : NSObject, FullScreenContentDelegate {
// 插页广告
var interstitial: InterstitialAd?
var currentAdvType : AdvertisementType = .rewardedInterstitialType
var currentTimes : Int = 3
/// 记录激励上次展示广告的时间
private var rewardlastAdShowTime: Date?
/// 记录插屏上次展示广告的时间
private var interstitiallastAdShowTime: Date?
var isFromHome = false
/// 默认每日免费删除次数
var defaultFreeTimes : Int {
get {
......@@ -80,11 +91,8 @@ class AdvManager : NSObject, FullScreenContentDelegate {
/// 广告策略 第一次可删除5张,第二次可删除5张,第三次可删除4张
let advDeleteResouceDic : [Int:Int] = [3:5,2:5,1:4,0:0]
// 进入页面之后30秒
var advTimeAfterInAPP : Int = 30
var timer: DispatchSourceTimer?
var interstitialOnceAgin = false
var rewardOnceAgin = false
/// 能请求广告
var canRequestAds: Bool {
......@@ -156,6 +164,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
]
)
} catch {
if rewardOnceAgin == false{
rewardOnceAgin = true
Task{
await loadRewardedInterstitialAd()
}
}
print("Failed to load rewarded interstitial ad with error: \(error.localizedDescription)")
APIReportManager.shared.startReport(
type: .ad_pull,
......@@ -204,6 +218,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
]
)
} catch {
if interstitialOnceAgin == false{
interstitialOnceAgin = true
Task{
await loadInterstitial()
}
}
print("Failed to load interstitial ad with error: \(error.localizedDescription)")
APIReportManager.shared.startReport(
type: .ad_pull,
......@@ -218,21 +238,23 @@ class AdvManager : NSObject, FullScreenContentDelegate {
/// 开始显示
/// - Parameter completed: 准备完成后回调
func showRewardedInterstitialAd(vc:UIViewController,from:String = "") {
func showRewardedInterstitialAd(vc:UIViewController,from:String = "",isByInter:Bool = false) {
// 检查是否在上次广告展示后的 30 秒内
if let lastAdShowTime = rewardlastAdShowTime {
let timeSinceLastAd = Date().timeIntervalSince(lastAdShowTime)
if timeSinceLastAd < 30 {
showErrMessage(vc: vc)
return
}
}
guard let ad = self.rewardedInterstitialAd else {
Task {
// 同时重新load两个广告内容
await self.loadInterstitial()
await self.loadRewardedInterstitialAd()
}
// 这里如果还没有,则弹出框
let alert = UIAlertController(title: nil, message: "Ad wasn't ready", preferredStyle: .alert)
vc.present(alert, animated: true, completion: nil)
// 1 秒后关闭弹窗
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true) {
self.failueFinishedCallBack()
}
if !isByInter{
showInterstitialAd(vc: vc,isByReward: true)
}else{
showErrMessage(vc: vc)
}
return
}
......@@ -240,23 +262,40 @@ class AdvManager : NSObject, FullScreenContentDelegate {
APIReportManager.shared.startReport(
type: .ad_prepare_show,
ext: ["ad_type": "rewardAd","from":self.adFromName])
ad.present(from: vc) {}
ad.present(from: nil) {}
}
/// 开始显示
/// - Parameter completed: 准备完成后回调
func showInterstitialAd(vc:UIViewController,from:String = "") {
func showInterstitialAd(vc:UIViewController,from:String = "",isByReward:Bool = false,needAlert:Bool = false,isHome:Bool = false) {
isFromHome = isHome
adFromVC = from
if let lastAdShowTime = interstitiallastAdShowTime {
let timeSinceLastAd = Date().timeIntervalSince(lastAdShowTime)
if timeSinceLastAd < 30 {
if needAlert{
showErrMessage(vc: vc)
}else{
finisedCallBack()
}
return
}
}
guard let ad = self.interstitial else {
self.currentAdvType = .rewardedInterstitialType
self.showRewardedInterstitialAd(vc: vc)
Task{
await loadInterstitial()
}
if !isByReward{
showRewardedInterstitialAd(vc: vc,from: from,isByInter: true)
}
return
}
self.currentAdvType = .interstitialType
self.adFromName = from
APIReportManager.shared.startReport(
type: .ad_prepare_show,
ext: ["ad_type": "interAd","from":adFromName])
ad.present(from: vc)
ad.present(from: nil)
}
......@@ -266,7 +305,11 @@ class AdvManager : NSObject, FullScreenContentDelegate {
var ad_type = "interAd"
if let _ = ad as? RewardedInterstitialAd{
ad_type = "rewardAd"
rewardlastAdShowTime = Date()
}else{
interstitiallastAdShowTime = Date()
}
APIReportManager.shared.startReport(
type: .ad_show,
ext: ["ad_type": ad_type,"from":adFromName])
......@@ -283,33 +326,32 @@ class AdvManager : NSObject, FullScreenContentDelegate {
APIReportManager.shared.startReport(
type: .ad_show_error,
ext: ["ad_type": ad_type,"from":adFromName,"reason":error.localizedDescription])
interstitiallastAdShowTime = nil
rewardlastAdShowTime = nil
self.rewardedInterstitialAd = nil
self.interstitial = nil
}
func adDidDismissFullScreenContent(_ ad: FullScreenPresentingAd) {
print("Ad did dismiss full screen content.")
if self.currentAdvType == .interstitialType {
// 如果播放的是插页广告,播放完成应该再缓存一份
self.interstitial = nil
if let _ = ad as? RewardedInterstitialAd{
self.rewardedInterstitialAd = nil
Task {
await self.loadInterstitial()
await self.loadRewardedInterstitialAd()
}
}else{
// 如果播放的是插页激励,则应该同时缓存两个(因为只有在插页广告没有的情况下才会到插页激励广告)
self.rewardedInterstitialAd = nil
self.interstitial = nil
Task {
await self.loadInterstitial()
await self.loadRewardedInterstitialAd()
}
}
// 更新值
updateAdvStrategyValue()
finisedCallBack()
}
func adDidRecordClick(_ ad: any FullScreenPresentingAd) {
print("点击广告")
......@@ -320,32 +362,19 @@ class AdvManager : NSObject, FullScreenContentDelegate {
ext:pram)
}
/// 广告结束之后重置策略信息
func updateAdvStrategyValue() {
AdvManager.shared.timer = nil
AdvManager.shared.advTimeAfterInAPP = 30
Singleton.shared.startCountdown {}
}
func ad(_ ad: FullScreenPresentingAd, didReceivePaidEvent adValue: AdValue) {
let valueMicros = adValue.value
let currencyCode = adValue.currencyCode
let precision = adValue.precision
// 获取基础广告信息
var pram = loadedAdNetworkResponseInfo(ad: ad)
// 添加价值相关信息到 pram 字典中
pram["value"] = "\(valueMicros)"
pram["currency"] = currencyCode
pram["precision"] = "\(precision.rawValue)"
print("广告价值和来源", pram)
// 使用 APIReportManager 上报广告价值
APIReportManager().startReport(type: .ad_price, ext: pram)
func showErrMessage(vc:UIViewController){
// 这里如果还没有,则弹出框
let alert = UIAlertController(title: nil, message: "Ad wasn't ready", preferredStyle: .alert)
GETCURRENTNAV()?.present(alert, animated: true, completion: nil)
// 1 秒后关闭弹窗
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.dismiss(animated: true) {
self.failueFinishedCallBack()
}
}
// SVProgressHUD.showInfo(withStatus: "Ad wasn't ready")
}
}
......
......@@ -239,7 +239,7 @@ class ChargeInfoViewController:BaseViewController {
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from:"charge")
AdvManager.shared.showRewardedInterstitialAd(vc: self,from:"charge")
}
}
......@@ -316,7 +316,7 @@ class CompressQualityController : BaseViewController{
}
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from:"compress")
AdvManager.shared.showRewardedInterstitialAd(vc: self,from:"compress")
}
}
......@@ -45,6 +45,9 @@ class CompressingViewController: BaseViewController {
return view
}()
let alert = EmailContentDelAlert(state: .endCompress)
var alertShow : Bool = false
lazy var animationView : LottieAnimationView = {
let animationView = LottieAnimationView(name: "iOS压缩完成")
animationView.layer.cornerRadius = 12
......@@ -93,7 +96,20 @@ class CompressingViewController: BaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
self.titleView.isHidden = true
self.titleView.callBack = { text in
// 弹框
self.view.showBlur()
self.alert.endCompressCallback = { idx in
self.view.hideBlur()
self.navigationController?.popViewController(animated: true)
}
self.alert.callblock = {idx in
self.view.hideBlur()
}
self.alert.show()
self.alertShow = true
}
setUI()
......@@ -182,15 +198,26 @@ class CompressingViewController: BaseViewController {
/// - comVideoDataSource: 压缩后的视频链接数组
fileprivate func updateNextView(_ compressAllSize: Double,_ comDataSource : [Data],_ comVideoDataSource : [URL]) {
DispatchQueue.main.async {
let vc = CompressCompletedViewController()
vc.currentMediaType = self.currentMediaType
vc.comDataSource = comDataSource
vc.comVideoDataSource = comVideoDataSource
vc.model = self.model
vc.completedSize = compressAllSize
self.navigationController?.pushViewController(vc, animated: true)
if self.alertShow {
self.view.hideBlur()
self.alert.dismiss(animated: true) {
self.jumpNextPage(compressAllSize,comDataSource,comVideoDataSource)
}
}else {
self.jumpNextPage(compressAllSize,comDataSource,comVideoDataSource)
}
}
}
func jumpNextPage(_ compressAllSize: Double,_ comDataSource : [Data],_ comVideoDataSource : [URL]){
let vc = CompressCompletedViewController()
vc.currentMediaType = self.currentMediaType
vc.comDataSource = comDataSource
vc.comVideoDataSource = comVideoDataSource
vc.model = self.model
vc.completedSize = compressAllSize
self.navigationController?.pushViewController(vc, animated: true)
}
// MARK: 设置UI
......
......@@ -63,13 +63,9 @@ extension MergeButtonView {
self.alertWhenMergeContact()
if IAPManager.share.isSubscribed == false {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc,from:"merge")
AdvManager.shared.finisedCallBack = {
self.alertWhenMergeContact()
}
}else {
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc,from:"merge",needAlert: true)
AdvManager.shared.finisedCallBack = {
self.alertWhenMergeContact()
}
}else {
......
......@@ -60,13 +60,9 @@ extension MergePreButtonView {
@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 {
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc,needAlert: true)
AdvManager.shared.finisedCallBack = {
self.mergePreCallBack()
}
}else {
......
......@@ -293,7 +293,7 @@ class HomeInfoViewController:BaseViewController {
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self)
AdvManager.shared.showRewardedInterstitialAd(vc: self)
}
// 由于继承自 UIViewController,必须实现这个必需的构造器
......@@ -401,7 +401,7 @@ class HomeInfoViewController:BaseViewController {
titleLabel.centerY = navCenterY
titleView.addSubview(titleLabel)
view.addSubview(tablewView)
view.addSubview(self.tablewView)
view.addSubview(self.defaultImageView)
self.defaultImageView.snp.makeConstraints { make in
make.width.height.equalTo(180)
......@@ -448,7 +448,7 @@ class HomeInfoViewController:BaseViewController {
// self.seletedAllBtn.width = seletedAllBtn.isSelected ? 131 : 115
// seletedAllBtn.x = titleView.width - marginLR - seletedAllBtn.width
tablewView.changeALlValue(isSeleted: seletedAllBtn.isSelected)
self.tablewView.changeALlValue(isSeleted: seletedAllBtn.isSelected)
}
@objc func seletedAllBtnClick() {
......
......@@ -776,7 +776,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from:self.mediaType?.rawValue ?? "")
AdvManager.shared.showRewardedInterstitialAd(vc: self,from:self.mediaType?.rawValue ?? "")
}
func deleteAction(count:Int,isAfterAdv:Bool){
......
......@@ -675,7 +675,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from: "video_delete")
AdvManager.shared.showRewardedInterstitialAd(vc: self,from: "video_delete")
}
func deleteAction(count:Int,isAfterAdv:Bool){
......
......@@ -19,7 +19,7 @@ class HomeViewController:BaseViewController {
var homeView:HomeView?
let adManager = AdvManager.shared
fileprivate func junmToModule(_ cIndex: String, _ self: HomeViewController) {
switch cIndex {
......@@ -180,22 +180,20 @@ class HomeViewController:BaseViewController {
if let cIndex = index as? String {
// 先走广告策略
if AdvManager.shared.advTimeAfterInAPP <= 0{
if IAPManager.share.isSubscribed == false {
AdvManager.shared.showInterstitialAd(vc: self,from: cIndex)
}else{
junmToModule(cIndex, self)
}
}else {
junmToModule(cIndex, self)
if IAPManager.share.isSubscribed == false {
self.adManager.showInterstitialAd(vc: self,from: cIndex,isHome: true)
}
AdvManager.shared.finisedCallBack = {
self.junmToModule(cIndex, self)
// junmToModule(cIndex, self)
self.adManager.finisedCallBack = {
if self.adManager.isFromHome{
self.junmToModule(cIndex, self)
}
}
AdvManager.shared.failueFinishedCallBack = {
self.adManager.failueFinishedCallBack = {
// 首页特殊要求广告没准备好也需要跳转
self.junmToModule(cIndex, self)
if self.adManager.isFromHome{
self.junmToModule(cIndex, self)
}
}
}
}
......@@ -289,11 +287,7 @@ class HomeViewController:BaseViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
self.barHidden = false
// 开启定时器
Singleton.shared.startCountdown {}
if !isShowCharge {
NotificationManager().configNotifications()
return
......
......@@ -89,7 +89,7 @@ class HomeInfoView :UIView {
self.ids = ids
self.titleText = titleText
self.type = type
super.init(frame: frame)
for array in ids ?? [] {
var smodels:[ImageSeletedCollectionItem] = []
......@@ -111,8 +111,7 @@ class HomeInfoView :UIView {
models.append(smodel)
}
super.init(frame: frame)
self.ids = sortData(source: ids ?? [], type: .latest)
setupUI()
......@@ -150,7 +149,6 @@ class HomeInfoView :UIView {
self.tableView.reloadSections(IndexSet(integer: 0), with: .automatic)
}
}
self.headerView.sortViewSubmitCallBack(ResourceFilterBoxModel(sortType: .latest))
}
required init?(coder: NSCoder) {
......
......@@ -103,6 +103,7 @@ class HomeView:UIView {
NotificationCenter.default.addObserver(forName: Notification.Name("applicationDidBecomeActive"), object: nil, queue: nil) {[weak self] _ in
guard let weakSelf = self else { return }
weakSelf.homeHeader?.progressBar.chaoticProgress = CGFloat(weakSelf.viewModel.totalSize)
weakSelf.collectionView.reloadData()
}
}
......
......@@ -279,7 +279,7 @@ extension TrashSubView {
/// 弹出广告
func popAdverTisement(){
if let vc = self.responderViewController() {
AdvManager.shared.showInterstitialAd(vc: vc,from: "trash")
AdvManager.shared.showRewardedInterstitialAd(vc: vc,from: "trash")
}
}
......
......@@ -183,7 +183,7 @@ class HomeViewModel {
} completionHandler: {[weak self] totalGroup in
guard let weakSelf = self else { return }
print("获取相似截图完成",totalGroup.count)
weakSelf.photoManager.similarScreenShotModels = totalGroup
weakSelf.photoManager.similarScreenShotModels = weakSelf.sortGroupsByTime(totalGroup)
weakSelf.filterResource()
weakSelf.homeDataChanged?(1,type.index,false)
}
......@@ -203,7 +203,7 @@ class HomeViewModel {
} completionHandler: {[weak self] totalGroup in
print("获取相似视频完成",totalGroup.count)
guard let weakSelf = self else { return }
weakSelf.photoManager.similarVideoModels = totalGroup
weakSelf.photoManager.similarVideoModels = weakSelf.sortGroupsByTime(totalGroup)
weakSelf.filterResource()
weakSelf.homeDataChanged?(1,type.index,false)
}
......@@ -242,7 +242,7 @@ class HomeViewModel {
} else {
print("在后台线程执行")
}
weakSelf.photoManager.duplicateModels = totalGroup
weakSelf.photoManager.duplicateModels = weakSelf.sortGroupsByTime(totalGroup)
weakSelf.filterResource()
// weakSelf.reloadCellHeight?()
weakSelf.homeDataChanged?(0,type.index,true)
......@@ -256,5 +256,16 @@ class HomeViewModel {
func filterResource(){
photoManager.filterResource()
}
func sortGroupsByTime(_ groups: [[AssetModel]]) -> [[AssetModel]] {
return groups.sorted { group1, group2 in
guard let firstAsset1 = group1.first,
let firstAsset2 = group2.first else {
return false
}
return firstAsset1.createDate > firstAsset2.createDate
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
......@@ -27,15 +27,15 @@
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XE9-Mv-kN1">
<rect key="frame" x="230" y="20" width="174" height="40"/>
<rect key="frame" x="254" y="20" width="150" height="40"/>
<color key="backgroundColor" red="0.0" green="0.50980392159999999" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" constant="174" id="EG9-xJ-hJZ"/>
<constraint firstAttribute="width" constant="150" id="EG9-xJ-hJZ"/>
<constraint firstAttribute="height" constant="40" id="ddO-RT-eKr"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="16"/>
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
<state key="normal" title="Un-keep Selected"/>
<state key="normal" title="Not keep All"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="Radius">
<real key="value" value="10"/>
......
......@@ -112,7 +112,7 @@ class PMLoadingView: UIView {
title.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(animationView.snp.bottom).offset(-80)
make.top.equalTo(animationView.snp.bottom).offset(-50)
}
subtitle.snp.makeConstraints { make in
......
......@@ -78,6 +78,7 @@ class SecretViewController: BaseViewController {
alert.show()
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
......@@ -263,9 +264,32 @@ class SecretViewController: BaseViewController {
if idx < 0 {
if IAPManager.share.isSubscribed == false {
// 添加的时候需要先弹出广告
if AdvManager.shared.advTimeAfterInAPP <= 0{
popAdverTisement()
AdvManager.shared.finisedCallBack = {
// if AdvManager.shared.advTimeAfterInAPP <= 0{
// popAdverTisement()
// AdvManager.shared.finisedCallBack = {
// self.AddAction = SecretActionView()
// self.AddAction.show();
// self.view.showBlur()
// self.AddAction.callback = { idx in
// popAdvThenDo(idx: idx)
// }
// }
// }else {
// self.AddAction = SecretActionView()
// self.view.showBlur()
// self.AddAction.show();
// self.AddAction.callback = { idx in
// popAdvThenDo(idx: idx)
// }
// }
// self.AddAction = SecretActionView()
// self.AddAction.show();
// self.view.showBlur()
// self.AddAction.callback = { idx in
// popAdvThenDo(idx: idx)
// }
AdvManager.shared.finisedCallBack = {
if AdvManager.shared.adFromVC == "Secret"{
self.AddAction = SecretActionView()
self.AddAction.show();
self.view.showBlur()
......@@ -273,14 +297,10 @@ class SecretViewController: BaseViewController {
popAdvThenDo(idx: idx)
}
}
}else {
self.AddAction = SecretActionView()
self.view.showBlur()
self.AddAction.show();
self.AddAction.callback = { idx in
popAdvThenDo(idx: idx)
}
}
popAdverTisement()
}else {
self.AddAction = SecretActionView()
......@@ -314,21 +334,25 @@ class SecretViewController: BaseViewController {
}
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from:"Secret")
}
// 临时方法
func popAdvThenDo(idx : Int){
if AdvManager.shared.advTimeAfterInAPP <= 0{
popAdverTisement()
AdvManager.shared.finisedCallBack = {
self.view.hideBlur()
self.AddImagePicker(idx)
}
}else {
self.view.hideBlur()
self.AddImagePicker(idx)
}
self.view.hideBlur()
self.AddImagePicker(idx)
// if AdvManager.shared.advTimeAfterInAPP <= 0{
// popAdverTisement()
// AdvManager.shared.finisedCallBack = {
// self.view.hideBlur()
// self.AddImagePicker(idx)
// }
// }else {
// self.view.hideBlur()
// self.AddImagePicker(idx)
// }
}
}
return b
......@@ -362,6 +386,7 @@ class SecretViewController: BaseViewController {
}()
deinit {
Print("释放SecretViewController")
SecretImageCache.share.removeAllImage()
}
......
......@@ -110,9 +110,11 @@ class SecretActionView: UIViewController ,UIViewControllerTransitioningDelegate
func show() -> Void {
guard let rt = cWindow?.rootViewController else { return }
// guard let rt = cWindow?.rootViewController else { return }
self.modalTransitionStyle = .crossDissolve
self.modalPresentationStyle = .overFullScreen
guard let rt = UIViewController.topMostViewController() else { return }
rt.present(self, animated: true)
}
......
......@@ -324,7 +324,7 @@ extension TrashViewController:UIScrollViewDelegate{
/// 弹出广告
func popAdverTisement(){
AdvManager.shared.showInterstitialAd(vc: self,from: "trash")
AdvManager.shared.showRewardedInterstitialAd(vc: self,from: "trash")
}
// 显示弹出框
......
......@@ -15,9 +15,14 @@ class EmailContentDelAlert: UIViewController, UIViewControllerTransitioningDeleg
case list
case emailSignOut
case emailApply
case endCompress
}
var callblock:((Int)->Void) = { idx in}
var endCompressCallback:((Int)->Void) = {idx in}
var state:EmailStateAlert = .group
@IBOutlet weak var EmailContentMessage: UILabel!
......@@ -52,7 +57,14 @@ class EmailContentDelAlert: UIViewController, UIViewControllerTransitioningDeleg
EmailContentAction1.setTitle("Yes", for: .normal)
EmailContentAction2.setTitle("Cancel", for: .normal)
break
case .endCompress:
EmailContentMessage.text = "Would you like to stop compressing?"
EmailContentAction1.setTitle("Keep Compressing", for: .normal)
EmailContentAction2.setTitle("Stop Compressing", for: .normal)
tipsLabel.text = "If you stop now you won't get the results"
break
}
}
func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
......@@ -76,7 +88,9 @@ class EmailContentDelAlert: UIViewController, UIViewControllerTransitioningDeleg
@IBAction func delMails(_ sender: Any) {
callblock(2)
self.dismiss(animated: true)
self.dismiss(animated: true) {
self.endCompressCallback(2)
}
}
init(state:EmailStateAlert) {
......
......@@ -24,27 +24,27 @@ class Singleton {
var photoPermission : PrivacyType?
func startCountdown(completion: @escaping () -> Void) {
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 {
} else {
print("倒计时结束!")
AdvManager.shared.timer?.cancel()
completion()
AdvManager.shared.timer = nil
}
}
timer.resume()
}
// func startCountdown(completion: @escaping () -> Void) {
//
// 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 {
// } else {
// print("倒计时结束!")
// AdvManager.shared.timer?.cancel()
// completion()
// AdvManager.shared.timer = nil
// }
// }
// 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