Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
P
PhoneManager
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Yang
PhoneManager
Commits
b53d6043
Commit
b53d6043
authored
May 23, 2025
by
shenyong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix bugs
parent
f5281983
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
246 additions
and
184 deletions
+246
-184
project.pbxproj
PhoneManager.xcodeproj/project.pbxproj
+2
-2
AdvManager.swift
...Manager/Class/Page/Advertisement/Manager/AdvManager.swift
+87
-58
ChargeInfoViewController.swift
...ass/Page/Charge/Controller/ChargeInfoViewController.swift
+1
-1
CompressQualityController.swift
.../Page/Compress/Controller/CompressQualityController.swift
+1
-1
MergeButtonView.swift
...Manager/Class/Page/Contact/View/Dup/MergeButtonView.swift
+3
-7
MergePreButtonView.swift
...ager/Class/Page/Contact/View/Dup/MergePreButtonView.swift
+3
-7
HomeInfoViewController.swift
...r/Class/Page/Home/Controller/HomeInfoViewController.swift
+1
-1
HomePhotosDetailViewController.swift
...Page/Home/Controller/HomePhotosDetailViewController.swift
+1
-1
HomeVideoDetailController.swift
...lass/Page/Home/Controller/HomeVideoDetailController.swift
+1
-1
HomeViewController.swift
...nager/Class/Page/Home/Controller/HomeViewController.swift
+12
-18
HomeView.swift
PhoneManager/Class/Page/Home/View/HomeView.swift
+1
-0
TrashSubView.swift
PhoneManager/Class/Page/Home/View/TrashSubView.swift
+1
-1
HomeViewModel.swift
PhoneManager/Class/Page/Home/ViewModel/HomeViewModel.swift
+14
-3
MaintaiBottomView.xib
PhoneManager/Class/Page/Keep/View/MaintaiBottomView.xib
+5
-5
PMLoadingView.swift
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
+1
-1
SecretViewController.swift
PhoneManager/Class/Page/Secret/SecretViewController.swift
+45
-20
SecretActionView.swift
PhoneManager/Class/Page/Secret/View/SecretActionView.swift
+3
-1
SettingViewController.swift
.../Page/Settings/ViewController/SettingViewController.swift
+42
-34
TrashViewController.swift
...ger/Class/Page/Trash/Controller/TrashViewController.swift
+1
-1
Singleton.swift
PhoneManager/Class/Tool/Singleton/Singleton.swift
+21
-21
No files found.
PhoneManager.xcodeproj/project.pbxproj
View file @
b53d6043
...
@@ -821,7 +821,7 @@
...
@@ -821,7 +821,7 @@
"$(inherited)"
,
"$(inherited)"
,
"@executable_path/Frameworks"
,
"@executable_path/Frameworks"
,
);
);
MARKETING_VERSION
=
1.1
.0
;
MARKETING_VERSION
=
2.2
.0
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.app.phonemanager
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.app.phonemanager
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
PROVISIONING_PROFILE_SPECIFIER
=
""
;
PROVISIONING_PROFILE_SPECIFIER
=
""
;
...
@@ -870,7 +870,7 @@
...
@@ -870,7 +870,7 @@
"$(inherited)"
,
"$(inherited)"
,
"@executable_path/Frameworks"
,
"@executable_path/Frameworks"
,
);
);
MARKETING_VERSION
=
1.1
.0
;
MARKETING_VERSION
=
2.2
.0
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.app.phonemanager
;
PRODUCT_BUNDLE_IDENTIFIER
=
com.app.phonemanager
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
PRODUCT_NAME
=
"$(TARGET_NAME)"
;
PROVISIONING_PROFILE_SPECIFIER
=
""
;
PROVISIONING_PROFILE_SPECIFIER
=
""
;
...
...
PhoneManager/Class/Page/Advertisement/Manager/AdvManager.swift
View file @
b53d6043
...
@@ -12,6 +12,7 @@ import AppTrackingTransparency
...
@@ -12,6 +12,7 @@ import AppTrackingTransparency
import
AdSupport
import
AdSupport
import
AppLovinSDK
import
AppLovinSDK
import
FBAudienceNetwork
import
FBAudienceNetwork
import
SVProgressHUD
enum
AdvertisementType
{
enum
AdvertisementType
{
case
rewardedInterstitialType
case
rewardedInterstitialType
...
@@ -33,9 +34,13 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -33,9 +34,13 @@ class AdvManager : NSObject, FullScreenContentDelegate {
var
adFromName
:
String
=
""
var
adFromName
:
String
=
""
var
adFromVC
:
String
=
""
// 看完广告的回调
// 看完广告的回调
var
finisedCallBack
:()
->
Void
=
{}
var
finisedCallBack
:()
->
Void
=
{}
var
serctCallBack
:()
->
Void
=
{}
// 广告都没播放成功回调
// 广告都没播放成功回调
var
failueFinishedCallBack
:
()
->
Void
=
{}
var
failueFinishedCallBack
:
()
->
Void
=
{}
...
@@ -45,10 +50,16 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -45,10 +50,16 @@ class AdvManager : NSObject, FullScreenContentDelegate {
// 插页广告
// 插页广告
var
interstitial
:
InterstitialAd
?
var
interstitial
:
InterstitialAd
?
var
currentAdvType
:
AdvertisementType
=
.
rewardedInterstitialType
var
currentTimes
:
Int
=
3
var
currentTimes
:
Int
=
3
/// 记录激励上次展示广告的时间
private
var
rewardlastAdShowTime
:
Date
?
/// 记录插屏上次展示广告的时间
private
var
interstitiallastAdShowTime
:
Date
?
var
isFromHome
=
false
/// 默认每日免费删除次数
/// 默认每日免费删除次数
var
defaultFreeTimes
:
Int
{
var
defaultFreeTimes
:
Int
{
get
{
get
{
...
@@ -80,11 +91,8 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -80,11 +91,8 @@ class AdvManager : NSObject, FullScreenContentDelegate {
/// 广告策略 第一次可删除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
]
// 进入页面之后30秒
var
interstitialOnceAgin
=
false
var
advTimeAfterInAPP
:
Int
=
30
var
rewardOnceAgin
=
false
var
timer
:
DispatchSourceTimer
?
/// 能请求广告
/// 能请求广告
var
canRequestAds
:
Bool
{
var
canRequestAds
:
Bool
{
...
@@ -156,6 +164,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -156,6 +164,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
]
]
)
)
}
catch
{
}
catch
{
if
rewardOnceAgin
==
false
{
rewardOnceAgin
=
true
Task
{
await
loadRewardedInterstitialAd
()
}
}
print
(
"Failed to load rewarded interstitial ad with error:
\(
error
.
localizedDescription
)
"
)
print
(
"Failed to load rewarded interstitial ad with error:
\(
error
.
localizedDescription
)
"
)
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_pull
,
type
:
.
ad_pull
,
...
@@ -204,6 +218,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -204,6 +218,12 @@ class AdvManager : NSObject, FullScreenContentDelegate {
]
]
)
)
}
catch
{
}
catch
{
if
interstitialOnceAgin
==
false
{
interstitialOnceAgin
=
true
Task
{
await
loadInterstitial
()
}
}
print
(
"Failed to load interstitial ad with error:
\(
error
.
localizedDescription
)
"
)
print
(
"Failed to load interstitial ad with error:
\(
error
.
localizedDescription
)
"
)
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_pull
,
type
:
.
ad_pull
,
...
@@ -218,21 +238,23 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -218,21 +238,23 @@ class AdvManager : NSObject, FullScreenContentDelegate {
/// 开始显示
/// 开始显示
/// - Parameter completed: 准备完成后回调
/// - 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
{
guard
let
ad
=
self
.
rewardedInterstitialAd
else
{
Task
{
Task
{
// 同时重新load两个广告内容
await
self
.
loadInterstitial
()
await
self
.
loadRewardedInterstitialAd
()
await
self
.
loadRewardedInterstitialAd
()
}
}
// 这里如果还没有,则弹出框
if
!
isByInter
{
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Ad wasn't ready"
,
preferredStyle
:
.
alert
)
showInterstitialAd
(
vc
:
vc
,
isByReward
:
true
)
vc
.
present
(
alert
,
animated
:
true
,
completion
:
nil
)
}
else
{
// 1 秒后关闭弹窗
showErrMessage
(
vc
:
vc
)
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
alert
.
dismiss
(
animated
:
true
)
{
self
.
failueFinishedCallBack
()
}
}
}
return
return
}
}
...
@@ -240,23 +262,40 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -240,23 +262,40 @@ class AdvManager : NSObject, FullScreenContentDelegate {
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_prepare_show
,
type
:
.
ad_prepare_show
,
ext
:
[
"ad_type"
:
"rewardAd"
,
"from"
:
self
.
adFromName
])
ext
:
[
"ad_type"
:
"rewardAd"
,
"from"
:
self
.
adFromName
])
ad
.
present
(
from
:
vc
)
{}
ad
.
present
(
from
:
nil
)
{}
}
}
/// 开始显示
/// 开始显示
/// - Parameter completed: 准备完成后回调
/// - 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
{
guard
let
ad
=
self
.
interstitial
else
{
self
.
currentAdvType
=
.
rewardedInterstitialType
Task
{
self
.
showRewardedInterstitialAd
(
vc
:
vc
)
await
loadInterstitial
()
}
if
!
isByReward
{
showRewardedInterstitialAd
(
vc
:
vc
,
from
:
from
,
isByInter
:
true
)
}
return
return
}
}
self
.
currentAdvType
=
.
interstitialType
self
.
adFromName
=
from
self
.
adFromName
=
from
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_prepare_show
,
type
:
.
ad_prepare_show
,
ext
:
[
"ad_type"
:
"interAd"
,
"from"
:
adFromName
])
ext
:
[
"ad_type"
:
"interAd"
,
"from"
:
adFromName
])
ad
.
present
(
from
:
vc
)
ad
.
present
(
from
:
nil
)
}
}
...
@@ -266,7 +305,11 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -266,7 +305,11 @@ class AdvManager : NSObject, FullScreenContentDelegate {
var
ad_type
=
"interAd"
var
ad_type
=
"interAd"
if
let
_
=
ad
as?
RewardedInterstitialAd
{
if
let
_
=
ad
as?
RewardedInterstitialAd
{
ad_type
=
"rewardAd"
ad_type
=
"rewardAd"
rewardlastAdShowTime
=
Date
()
}
else
{
interstitiallastAdShowTime
=
Date
()
}
}
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_show
,
type
:
.
ad_show
,
ext
:
[
"ad_type"
:
ad_type
,
"from"
:
adFromName
])
ext
:
[
"ad_type"
:
ad_type
,
"from"
:
adFromName
])
...
@@ -283,33 +326,32 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -283,33 +326,32 @@ class AdvManager : NSObject, FullScreenContentDelegate {
APIReportManager
.
shared
.
startReport
(
APIReportManager
.
shared
.
startReport
(
type
:
.
ad_show_error
,
type
:
.
ad_show_error
,
ext
:
[
"ad_type"
:
ad_type
,
"from"
:
adFromName
,
"reason"
:
error
.
localizedDescription
])
ext
:
[
"ad_type"
:
ad_type
,
"from"
:
adFromName
,
"reason"
:
error
.
localizedDescription
])
interstitiallastAdShowTime
=
nil
rewardlastAdShowTime
=
nil
self
.
rewardedInterstitialAd
=
nil
self
.
rewardedInterstitialAd
=
nil
self
.
interstitial
=
nil
}
}
func
adDidDismissFullScreenContent
(
_
ad
:
FullScreenPresentingAd
)
{
func
adDidDismissFullScreenContent
(
_
ad
:
FullScreenPresentingAd
)
{
print
(
"Ad did dismiss full screen content."
)
print
(
"Ad did dismiss full screen content."
)
if
self
.
currentAdvType
==
.
interstitialType
{
if
let
_
=
ad
as?
RewardedInterstitialAd
{
// 如果播放的是插页广告,播放完成应该再缓存一份
self
.
rewardedInterstitialAd
=
nil
self
.
interstitial
=
nil
Task
{
Task
{
await
self
.
load
Interstitial
()
await
self
.
load
RewardedInterstitialAd
()
}
}
}
else
{
}
else
{
// 如果播放的是插页激励,则应该同时缓存两个(因为只有在插页广告没有的情况下才会到插页激励广告)
self
.
interstitial
=
nil
self
.
rewardedInterstitialAd
=
nil
Task
{
Task
{
await
self
.
loadInterstitial
()
await
self
.
loadInterstitial
()
await
self
.
loadRewardedInterstitialAd
()
}
}
}
}
// 更新值
updateAdvStrategyValue
()
finisedCallBack
()
finisedCallBack
()
}
}
func
adDidRecordClick
(
_
ad
:
any
FullScreenPresentingAd
)
{
func
adDidRecordClick
(
_
ad
:
any
FullScreenPresentingAd
)
{
print
(
"点击广告"
)
print
(
"点击广告"
)
...
@@ -320,32 +362,19 @@ class AdvManager : NSObject, FullScreenContentDelegate {
...
@@ -320,32 +362,19 @@ class AdvManager : NSObject, FullScreenContentDelegate {
ext
:
pram
)
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
)
func
showErrMessage
(
vc
:
UIViewController
){
// 使用 APIReportManager 上报广告价值
// 这里如果还没有,则弹出框
APIReportManager
()
.
startReport
(
type
:
.
ad_price
,
ext
:
pram
)
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")
}
}
}
}
...
...
PhoneManager/Class/Page/Charge/Controller/ChargeInfoViewController.swift
View file @
b53d6043
...
@@ -238,7 +238,7 @@ class ChargeInfoViewController:BaseViewController {
...
@@ -238,7 +238,7 @@ class ChargeInfoViewController:BaseViewController {
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"charge"
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
,
from
:
"charge"
)
}
}
}
}
PhoneManager/Class/Page/Compress/Controller/CompressQualityController.swift
View file @
b53d6043
...
@@ -316,7 +316,7 @@ class CompressQualityController : BaseViewController{
...
@@ -316,7 +316,7 @@ class CompressQualityController : BaseViewController{
}
}
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"compress"
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
,
from
:
"compress"
)
}
}
}
}
PhoneManager/Class/Page/Contact/View/Dup/MergeButtonView.swift
View file @
b53d6043
...
@@ -63,9 +63,8 @@ extension MergeButtonView {
...
@@ -63,9 +63,8 @@ extension MergeButtonView {
self
.
alertWhenMergeContact
()
self
.
alertWhenMergeContact
()
if
IAPManager
.
share
.
isSubscribed
==
false
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
// 添加的时候需要先弹出广告
// 添加的时候需要先弹出广告
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
if
let
vc
=
self
.
responderViewController
()
{
if
let
vc
=
self
.
responderViewController
()
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
vc
,
from
:
"merge"
)
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
vc
,
from
:
"merge"
,
needAlert
:
true
)
AdvManager
.
shared
.
finisedCallBack
=
{
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
alertWhenMergeContact
()
self
.
alertWhenMergeContact
()
}
}
...
@@ -75,9 +74,6 @@ extension MergeButtonView {
...
@@ -75,9 +74,6 @@ extension MergeButtonView {
}
else
{
}
else
{
self
.
alertWhenMergeContact
()
self
.
alertWhenMergeContact
()
}
}
}
else
{
self
.
alertWhenMergeContact
()
}
}
}
fileprivate
func
showMeegeAlert
(
_
self
:
MergeButtonView
)
{
fileprivate
func
showMeegeAlert
(
_
self
:
MergeButtonView
)
{
...
...
PhoneManager/Class/Page/Contact/View/Dup/MergePreButtonView.swift
View file @
b53d6043
...
@@ -60,9 +60,8 @@ extension MergePreButtonView {
...
@@ -60,9 +60,8 @@ extension MergePreButtonView {
@objc
func
mergePre
(){
@objc
func
mergePre
(){
if
IAPManager
.
share
.
isSubscribed
==
false
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
// 添加的时候需要先弹出广告
// 添加的时候需要先弹出广告
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
if
let
vc
=
self
.
responderViewController
()
{
if
let
vc
=
self
.
responderViewController
()
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
vc
)
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
vc
,
needAlert
:
true
)
AdvManager
.
shared
.
finisedCallBack
=
{
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
mergePreCallBack
()
self
.
mergePreCallBack
()
}
}
...
@@ -72,8 +71,5 @@ extension MergePreButtonView {
...
@@ -72,8 +71,5 @@ extension MergePreButtonView {
}
else
{
}
else
{
self
.
mergePreCallBack
()
self
.
mergePreCallBack
()
}
}
}
else
{
self
.
mergePreCallBack
()
}
}
}
}
}
PhoneManager/Class/Page/Home/Controller/HomeInfoViewController.swift
View file @
b53d6043
...
@@ -310,7 +310,7 @@ class HomeInfoViewController:BaseViewController {
...
@@ -310,7 +310,7 @@ class HomeInfoViewController:BaseViewController {
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
)
}
}
// 由于继承自 UIViewController,必须实现这个必需的构造器
// 由于继承自 UIViewController,必须实现这个必需的构造器
...
...
PhoneManager/Class/Page/Home/Controller/HomePhotosDetailViewController.swift
View file @
b53d6043
...
@@ -776,7 +776,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -776,7 +776,7 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
self
.
mediaType
?
.
rawValue
??
""
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
,
from
:
self
.
mediaType
?
.
rawValue
??
""
)
}
}
func
deleteAction
(
count
:
Int
,
isAfterAdv
:
Bool
){
func
deleteAction
(
count
:
Int
,
isAfterAdv
:
Bool
){
...
...
PhoneManager/Class/Page/Home/Controller/HomeVideoDetailController.swift
View file @
b53d6043
...
@@ -669,7 +669,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -669,7 +669,7 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"video_delete"
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
,
from
:
"video_delete"
)
}
}
func
deleteAction
(
count
:
Int
,
isAfterAdv
:
Bool
){
func
deleteAction
(
count
:
Int
,
isAfterAdv
:
Bool
){
...
...
PhoneManager/Class/Page/Home/Controller/HomeViewController.swift
View file @
b53d6043
...
@@ -19,7 +19,7 @@ class HomeViewController:BaseViewController {
...
@@ -19,7 +19,7 @@ class HomeViewController:BaseViewController {
var
homeView
:
HomeView
?
var
homeView
:
HomeView
?
let
adManager
=
AdvManager
.
shared
fileprivate
func
junmToModule
(
_
cIndex
:
String
,
_
self
:
HomeViewController
)
{
fileprivate
func
junmToModule
(
_
cIndex
:
String
,
_
self
:
HomeViewController
)
{
switch
cIndex
{
switch
cIndex
{
...
@@ -180,25 +180,23 @@ class HomeViewController:BaseViewController {
...
@@ -180,25 +180,23 @@ class HomeViewController:BaseViewController {
if
let
cIndex
=
index
as?
String
{
if
let
cIndex
=
index
as?
String
{
// 先走广告策略
// 先走广告策略
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
cIndex
)
self
.
adManager
.
showInterstitialAd
(
vc
:
self
,
from
:
cIndex
,
isHome
:
true
)
}
else
{
junmToModule
(
cIndex
,
self
)
}
}
}
else
{
// junmToModule(cIndex, self)
junmToModule
(
cIndex
,
self
)
self
.
adManager
.
finisedCallBack
=
{
}
if
self
.
adManager
.
isFromHome
{
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
junmToModule
(
cIndex
,
self
)
self
.
junmToModule
(
cIndex
,
self
)
}
}
}
AdvManager
.
shared
.
failueFinishedCallBack
=
{
self
.
adManager
.
failueFinishedCallBack
=
{
// 首页特殊要求广告没准备好也需要跳转
// 首页特殊要求广告没准备好也需要跳转
if
self
.
adManager
.
isFromHome
{
self
.
junmToModule
(
cIndex
,
self
)
self
.
junmToModule
(
cIndex
,
self
)
}
}
}
}
}
}
}
view
.
addSubview
(
homeView
!
)
view
.
addSubview
(
homeView
!
)
}
}
...
@@ -289,11 +287,7 @@ class HomeViewController:BaseViewController {
...
@@ -289,11 +287,7 @@ class HomeViewController:BaseViewController {
override
func
viewDidAppear
(
_
animated
:
Bool
)
{
override
func
viewDidAppear
(
_
animated
:
Bool
)
{
super
.
viewDidAppear
(
animated
)
super
.
viewDidAppear
(
animated
)
self
.
barHidden
=
false
self
.
barHidden
=
false
// 开启定时器
Singleton
.
shared
.
startCountdown
{}
if
!
isShowCharge
{
if
!
isShowCharge
{
NotificationManager
()
.
configNotifications
()
NotificationManager
()
.
configNotifications
()
return
return
...
...
PhoneManager/Class/Page/Home/View/HomeView.swift
View file @
b53d6043
...
@@ -103,6 +103,7 @@ class HomeView:UIView {
...
@@ -103,6 +103,7 @@ class HomeView:UIView {
NotificationCenter
.
default
.
addObserver
(
forName
:
Notification
.
Name
(
"applicationDidBecomeActive"
),
object
:
nil
,
queue
:
nil
)
{[
weak
self
]
_
in
NotificationCenter
.
default
.
addObserver
(
forName
:
Notification
.
Name
(
"applicationDidBecomeActive"
),
object
:
nil
,
queue
:
nil
)
{[
weak
self
]
_
in
guard
let
weakSelf
=
self
else
{
return
}
guard
let
weakSelf
=
self
else
{
return
}
weakSelf
.
homeHeader
?
.
progressBar
.
chaoticProgress
=
CGFloat
(
weakSelf
.
viewModel
.
totalSize
)
weakSelf
.
collectionView
.
reloadData
()
weakSelf
.
collectionView
.
reloadData
()
}
}
}
}
...
...
PhoneManager/Class/Page/Home/View/TrashSubView.swift
View file @
b53d6043
...
@@ -259,7 +259,7 @@ extension TrashSubView {
...
@@ -259,7 +259,7 @@ extension TrashSubView {
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
if
let
vc
=
self
.
responderViewController
()
{
if
let
vc
=
self
.
responderViewController
()
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
vc
,
from
:
"trash"
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
vc
,
from
:
"trash"
)
}
}
}
}
...
...
PhoneManager/Class/Page/Home/ViewModel/HomeViewModel.swift
View file @
b53d6043
...
@@ -183,7 +183,7 @@ class HomeViewModel {
...
@@ -183,7 +183,7 @@ class HomeViewModel {
}
completionHandler
:
{[
weak
self
]
totalGroup
in
}
completionHandler
:
{[
weak
self
]
totalGroup
in
guard
let
weakSelf
=
self
else
{
return
}
guard
let
weakSelf
=
self
else
{
return
}
print
(
"获取相似截图完成"
,
totalGroup
.
count
)
print
(
"获取相似截图完成"
,
totalGroup
.
count
)
weakSelf
.
photoManager
.
similarScreenShotModels
=
totalGroup
weakSelf
.
photoManager
.
similarScreenShotModels
=
weakSelf
.
sortGroupsByTime
(
totalGroup
)
weakSelf
.
filterResource
()
weakSelf
.
filterResource
()
weakSelf
.
homeDataChanged
?(
1
,
type
.
index
,
false
)
weakSelf
.
homeDataChanged
?(
1
,
type
.
index
,
false
)
}
}
...
@@ -203,7 +203,7 @@ class HomeViewModel {
...
@@ -203,7 +203,7 @@ class HomeViewModel {
}
completionHandler
:
{[
weak
self
]
totalGroup
in
}
completionHandler
:
{[
weak
self
]
totalGroup
in
print
(
"获取相似视频完成"
,
totalGroup
.
count
)
print
(
"获取相似视频完成"
,
totalGroup
.
count
)
guard
let
weakSelf
=
self
else
{
return
}
guard
let
weakSelf
=
self
else
{
return
}
weakSelf
.
photoManager
.
similarVideoModels
=
totalGroup
weakSelf
.
photoManager
.
similarVideoModels
=
weakSelf
.
sortGroupsByTime
(
totalGroup
)
weakSelf
.
filterResource
()
weakSelf
.
filterResource
()
weakSelf
.
homeDataChanged
?(
1
,
type
.
index
,
false
)
weakSelf
.
homeDataChanged
?(
1
,
type
.
index
,
false
)
}
}
...
@@ -242,7 +242,7 @@ class HomeViewModel {
...
@@ -242,7 +242,7 @@ class HomeViewModel {
}
else
{
}
else
{
print
(
"在后台线程执行"
)
print
(
"在后台线程执行"
)
}
}
weakSelf
.
photoManager
.
duplicateModels
=
totalGroup
weakSelf
.
photoManager
.
duplicateModels
=
weakSelf
.
sortGroupsByTime
(
totalGroup
)
weakSelf
.
filterResource
()
weakSelf
.
filterResource
()
// weakSelf.reloadCellHeight?()
// weakSelf.reloadCellHeight?()
weakSelf
.
homeDataChanged
?(
0
,
type
.
index
,
true
)
weakSelf
.
homeDataChanged
?(
0
,
type
.
index
,
true
)
...
@@ -256,5 +256,16 @@ class HomeViewModel {
...
@@ -256,5 +256,16 @@ class HomeViewModel {
func
filterResource
(){
func
filterResource
(){
photoManager
.
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
}
}
}
}
PhoneManager/Class/Page/Keep/View/MaintaiBottomView.xib
View file @
b53d6043
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<document
type=
"com.apple.InterfaceBuilder3.CocoaTouch.XIB"
version=
"3.0"
toolsVersion=
"23
727
"
targetRuntime=
"iOS.CocoaTouch"
propertyAccessControl=
"none"
useAutolayout=
"YES"
useTraitCollections=
"YES"
useSafeAreas=
"YES"
colorMatched=
"YES"
>
<document
type=
"com.apple.InterfaceBuilder3.CocoaTouch.XIB"
version=
"3.0"
toolsVersion=
"23
504
"
targetRuntime=
"iOS.CocoaTouch"
propertyAccessControl=
"none"
useAutolayout=
"YES"
useTraitCollections=
"YES"
useSafeAreas=
"YES"
colorMatched=
"YES"
>
<device
id=
"retina6_12"
orientation=
"portrait"
appearance=
"light"
/>
<device
id=
"retina6_12"
orientation=
"portrait"
appearance=
"light"
/>
<dependencies>
<dependencies>
<deployment
identifier=
"iOS"
/>
<deployment
identifier=
"iOS"
/>
<plugIn
identifier=
"com.apple.InterfaceBuilder.IBCocoaTouchPlugin"
version=
"23
721
"
/>
<plugIn
identifier=
"com.apple.InterfaceBuilder.IBCocoaTouchPlugin"
version=
"23
506
"
/>
<capability
name=
"Safe area layout guides"
minToolsVersion=
"9.0"
/>
<capability
name=
"Safe area layout guides"
minToolsVersion=
"9.0"
/>
<capability
name=
"documents saved in the Xcode 8 format"
minToolsVersion=
"8.0"
/>
<capability
name=
"documents saved in the Xcode 8 format"
minToolsVersion=
"8.0"
/>
</dependencies>
</dependencies>
...
@@ -27,15 +27,15 @@
...
@@ -27,15 +27,15 @@
<nil
key=
"highlightedColor"
/>
<nil
key=
"highlightedColor"
/>
</label>
</label>
<button
opaque=
"NO"
contentMode=
"scaleToFill"
contentHorizontalAlignment=
"center"
contentVerticalAlignment=
"center"
lineBreakMode=
"middleTruncation"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"XE9-Mv-kN1"
>
<button
opaque=
"NO"
contentMode=
"scaleToFill"
contentHorizontalAlignment=
"center"
contentVerticalAlignment=
"center"
lineBreakMode=
"middleTruncation"
translatesAutoresizingMaskIntoConstraints=
"NO"
id=
"XE9-Mv-kN1"
>
<rect
key=
"frame"
x=
"2
30"
y=
"20"
width=
"174
"
height=
"40"
/>
<rect
key=
"frame"
x=
"2
54"
y=
"20"
width=
"150
"
height=
"40"
/>
<color
key=
"backgroundColor"
red=
"0.0"
green=
"0.50980392159999999"
blue=
"1"
alpha=
"1"
colorSpace=
"custom"
customColorSpace=
"sRGB"
/>
<color
key=
"backgroundColor"
red=
"0.0"
green=
"0.50980392159999999"
blue=
"1"
alpha=
"1"
colorSpace=
"custom"
customColorSpace=
"sRGB"
/>
<constraints>
<constraints>
<constraint
firstAttribute=
"width"
constant=
"1
74
"
id=
"EG9-xJ-hJZ"
/>
<constraint
firstAttribute=
"width"
constant=
"1
50
"
id=
"EG9-xJ-hJZ"
/>
<constraint
firstAttribute=
"height"
constant=
"40"
id=
"ddO-RT-eKr"
/>
<constraint
firstAttribute=
"height"
constant=
"40"
id=
"ddO-RT-eKr"
/>
</constraints>
</constraints>
<fontDescription
key=
"fontDescription"
type=
"system"
weight=
"semibold"
pointSize=
"16"
/>
<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"
/>
<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>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute
type=
"number"
keyPath=
"Radius"
>
<userDefinedRuntimeAttribute
type=
"number"
keyPath=
"Radius"
>
<real
key=
"value"
value=
"10"
/>
<real
key=
"value"
value=
"10"
/>
...
...
PhoneManager/Class/Page/Public/Loading/PMLoadingView.swift
View file @
b53d6043
...
@@ -112,7 +112,7 @@ class PMLoadingView: UIView {
...
@@ -112,7 +112,7 @@ class PMLoadingView: UIView {
title
.
snp
.
makeConstraints
{
make
in
title
.
snp
.
makeConstraints
{
make
in
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
make
.
top
.
equalTo
(
animationView
.
snp
.
bottom
)
.
offset
(
-
8
0
)
make
.
top
.
equalTo
(
animationView
.
snp
.
bottom
)
.
offset
(
-
5
0
)
}
}
subtitle
.
snp
.
makeConstraints
{
make
in
subtitle
.
snp
.
makeConstraints
{
make
in
...
...
PhoneManager/Class/Page/Secret/SecretViewController.swift
View file @
b53d6043
...
@@ -79,6 +79,7 @@ class SecretViewController: BaseViewController {
...
@@ -79,6 +79,7 @@ class SecretViewController: BaseViewController {
}
}
}
}
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
override
func
viewWillAppear
(
_
animated
:
Bool
)
{
super
.
viewWillAppear
(
animated
)
super
.
viewWillAppear
(
animated
)
secretLock
.
isSelected
=
!
(
pass
.
count
>
1
)
secretLock
.
isSelected
=
!
(
pass
.
count
>
1
)
...
@@ -263,9 +264,32 @@ class SecretViewController: BaseViewController {
...
@@ -263,9 +264,32 @@ class SecretViewController: BaseViewController {
if
idx
<
0
{
if
idx
<
0
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
// 添加的时候需要先弹出广告
// 添加的时候需要先弹出广告
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
// if AdvManager.shared.advTimeAfterInAPP <= 0{
popAdverTisement
()
// 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
=
{
AdvManager
.
shared
.
finisedCallBack
=
{
if
AdvManager
.
shared
.
adFromVC
==
"Secret"
{
self
.
AddAction
=
SecretActionView
()
self
.
AddAction
=
SecretActionView
()
self
.
AddAction
.
show
();
self
.
AddAction
.
show
();
self
.
view
.
showBlur
()
self
.
view
.
showBlur
()
...
@@ -273,14 +297,10 @@ class SecretViewController: BaseViewController {
...
@@ -273,14 +297,10 @@ class SecretViewController: BaseViewController {
popAdvThenDo
(
idx
:
idx
)
popAdvThenDo
(
idx
:
idx
)
}
}
}
}
}
else
{
self
.
AddAction
=
SecretActionView
()
self
.
view
.
showBlur
()
self
.
AddAction
.
show
();
self
.
AddAction
.
callback
=
{
idx
in
popAdvThenDo
(
idx
:
idx
)
}
}
}
popAdverTisement
()
}
else
{
}
else
{
self
.
AddAction
=
SecretActionView
()
self
.
AddAction
=
SecretActionView
()
...
@@ -314,21 +334,25 @@ class SecretViewController: BaseViewController {
...
@@ -314,21 +334,25 @@ class SecretViewController: BaseViewController {
}
}
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"Secret"
)
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"Secret"
)
}
}
// 临时方法
// 临时方法
func
popAdvThenDo
(
idx
:
Int
){
func
popAdvThenDo
(
idx
:
Int
){
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
popAdverTisement
()
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
view
.
hideBlur
()
self
.
view
.
hideBlur
()
self
.
AddImagePicker
(
idx
)
self
.
AddImagePicker
(
idx
)
}
// if AdvManager.shared.advTimeAfterInAPP <= 0{
}
else
{
// popAdverTisement()
self
.
view
.
hideBlur
()
// AdvManager.shared.finisedCallBack = {
self
.
AddImagePicker
(
idx
)
// self.view.hideBlur()
}
// self.AddImagePicker(idx)
// }
// }else {
// self.view.hideBlur()
// self.AddImagePicker(idx)
// }
}
}
}
}
return
b
return
b
...
@@ -362,6 +386,7 @@ class SecretViewController: BaseViewController {
...
@@ -362,6 +386,7 @@ class SecretViewController: BaseViewController {
}()
}()
deinit
{
deinit
{
Print
(
"释放SecretViewController"
)
SecretImageCache
.
share
.
removeAllImage
()
SecretImageCache
.
share
.
removeAllImage
()
}
}
...
...
PhoneManager/Class/Page/Secret/View/SecretActionView.swift
View file @
b53d6043
...
@@ -110,9 +110,11 @@ class SecretActionView: UIViewController ,UIViewControllerTransitioningDelegate
...
@@ -110,9 +110,11 @@ class SecretActionView: UIViewController ,UIViewControllerTransitioningDelegate
func
show
()
->
Void
{
func
show
()
->
Void
{
guard
let
rt
=
cWindow
?
.
rootViewController
else
{
return
}
//
guard let rt = cWindow?.rootViewController else { return }
self
.
modalTransitionStyle
=
.
crossDissolve
self
.
modalTransitionStyle
=
.
crossDissolve
self
.
modalPresentationStyle
=
.
overFullScreen
self
.
modalPresentationStyle
=
.
overFullScreen
guard
let
rt
=
UIViewController
.
topMostViewController
()
else
{
return
}
rt
.
present
(
self
,
animated
:
true
)
rt
.
present
(
self
,
animated
:
true
)
}
}
...
...
PhoneManager/Class/Page/Settings/ViewController/SettingViewController.swift
View file @
b53d6043
...
@@ -176,23 +176,27 @@ class SettingViewController : BaseViewController , UITableViewDelegate, UITableV
...
@@ -176,23 +176,27 @@ class SettingViewController : BaseViewController , UITableViewDelegate, UITableV
vibrate
()
vibrate
()
break
break
case
settingLabels
.
Widgets
.
rawValue
:
case
settingLabels
.
Widgets
.
rawValue
:
let
callblock
:(()
->
Void
)
=
{[
weak
self
]
in
// let callblock:(()->Void) = {[weak self] in
guard
let
self
=
self
else
{
return
}
// guard let self = self else { return }
let
widget
=
WidgetViewController
()
// let widget = WidgetViewController()
self
.
navigationController
?
.
pushViewController
(
widget
,
animated
:
true
)
// self.navigationController?.pushViewController(widget, animated: true)
}
// }
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
// if IAPManager.share.isSubscribed == false {
//// AdvManager.shared.showInterstitialAd(vc: self,from: "Widgets")
//// let widget = WidgetViewController()
//// self.navigationController?.pushViewController(widget, animated: true)
// }else{
// callblock()
// }
// AdvManager.shared.finisedCallBack = {
// callblock()
// }
if
IAPManager
.
share
.
isSubscribed
==
false
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"Widgets"
)
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"Widgets"
)
}
else
{
callblock
()
}
}
else
{
callblock
()
}
AdvManager
.
shared
.
finisedCallBack
=
{
callblock
()
}
}
let
widget
=
WidgetViewController
()
self
.
navigationController
?
.
pushViewController
(
widget
,
animated
:
true
)
break
break
case
settingLabels
.
FollowonInstagram
.
rawValue
:
case
settingLabels
.
FollowonInstagram
.
rawValue
:
guard
let
url
=
URL
(
string
:
"https://www.instagram.com/phone.manager.app/"
)
else
{
return
}
guard
let
url
=
URL
(
string
:
"https://www.instagram.com/phone.manager.app/"
)
else
{
return
}
...
@@ -326,25 +330,29 @@ class SettingViewController : BaseViewController , UITableViewDelegate, UITableV
...
@@ -326,25 +330,29 @@ class SettingViewController : BaseViewController , UITableViewDelegate, UITableV
}
}
alert
.
show
()
alert
.
show
()
}
else
{
}
else
{
let
callblock
:(()
->
Void
)
=
{
[
weak
self
]
in
// let callblock:(()->Void) = { [weak self] in
guard
let
self
=
self
else
{
return
}
// guard let self = self else { return }
// let vc:EmailLoginController = EmailLoginController()
// vc.state = .home
// self.navigationController?.pushViewController(vc, animated: true)
// self.tableView.reloadData()
// }
// if IAPManager.share.isSubscribed == false {
// AdvManager.shared.showInterstitialAd(vc: self,from: "emailLoginSignOut")
// }else{
// callblock()
// }
// AdvManager.shared.finisedCallBack = {
// callblock()
// }
if
IAPManager
.
share
.
isSubscribed
==
false
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"emailLoginSignOut"
)
}
let
vc
:
EmailLoginController
=
EmailLoginController
()
let
vc
:
EmailLoginController
=
EmailLoginController
()
vc
.
state
=
.
home
vc
.
state
=
.
home
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
self
.
tableView
.
reloadData
()
self
.
tableView
.
reloadData
()
}
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
if
IAPManager
.
share
.
isSubscribed
==
false
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"emailLoginSignOut"
)
}
else
{
callblock
()
}
}
else
{
callblock
()
}
AdvManager
.
shared
.
finisedCallBack
=
{
callblock
()
}
}
}
}
}
...
...
PhoneManager/Class/Page/Trash/Controller/TrashViewController.swift
View file @
b53d6043
...
@@ -321,7 +321,7 @@ extension TrashViewController:UIScrollViewDelegate{
...
@@ -321,7 +321,7 @@ extension TrashViewController:UIScrollViewDelegate{
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
,
from
:
"trash"
)
AdvManager
.
shared
.
show
Rewarded
InterstitialAd
(
vc
:
self
,
from
:
"trash"
)
}
}
// 显示弹出框
// 显示弹出框
...
...
PhoneManager/Class/Tool/Singleton/Singleton.swift
View file @
b53d6043
...
@@ -24,27 +24,27 @@ class Singleton {
...
@@ -24,27 +24,27 @@ class Singleton {
var
photoPermission
:
PrivacyType
?
var
photoPermission
:
PrivacyType
?
func
startCountdown
(
completion
:
@escaping
()
->
Void
)
{
//
func startCountdown(completion: @escaping () -> Void) {
//
if
AdvManager
.
shared
.
timer
!=
nil
{
//
if AdvManager.shared.timer != nil {
return
//
return
}
//
}
let
queue
=
DispatchQueue
.
global
()
//
let queue = DispatchQueue.global()
let
timer
=
DispatchSource
.
makeTimerSource
(
queue
:
queue
)
//
let timer = DispatchSource.makeTimerSource(queue: queue)
AdvManager
.
shared
.
timer
=
timer
//
AdvManager.shared.timer = timer
AdvManager
.
shared
.
timer
?
.
schedule
(
deadline
:
.
now
(),
repeating
:
.
seconds
(
1
))
//
AdvManager.shared.timer?.schedule(deadline: .now(), repeating: .seconds(1))
AdvManager
.
shared
.
timer
?
.
setEventHandler
{
//
AdvManager.shared.timer?.setEventHandler {
AdvManager
.
shared
.
advTimeAfterInAPP
-=
1
//
AdvManager.shared.advTimeAfterInAPP -= 1
if
AdvManager
.
shared
.
advTimeAfterInAPP
>=
0
{
//
if AdvManager.shared.advTimeAfterInAPP >= 0 {
}
else
{
//
} else {
print
(
"倒计时结束!"
)
//
print("倒计时结束!")
AdvManager
.
shared
.
timer
?
.
cancel
()
//
AdvManager.shared.timer?.cancel()
completion
()
//
completion()
AdvManager
.
shared
.
timer
=
nil
//
AdvManager.shared.timer = nil
}
//
}
}
//
}
timer
.
resume
()
//
timer.resume()
}
//
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment