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
d95f378d
Commit
d95f378d
authored
Apr 22, 2025
by
CZ1004
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
广告逻辑添加第一个版本
parent
09c95bff
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
411 additions
and
198 deletions
+411
-198
AdvManager.swift
...ager/Class/Session/Advertisement/Manager/AdvManager.swift
+5
-1
AdvTipDeleteView.swift
...r/Class/Session/Advertisement/View/AdvTipDeleteView.swift
+75
-64
AdvTipSelectView.swift
...r/Class/Session/Advertisement/View/AdvTipSelectView.swift
+44
-40
ChargeInfoViewController.swift
.../Session/Charge/Controller/ChargeInfoViewController.swift
+56
-0
ChargeInfoSettingView.swift
...ger/Class/Session/Charge/View/ChargeInfoSettingView.swift
+5
-25
CompressController.swift
...lass/Session/Compress/Controller/CompressController.swift
+17
-1
HomeInfoViewController.swift
...lass/Session/Home/Controller/HomeInfoViewController.swift
+112
-61
HomePhotosDetailViewController.swift
...sion/Home/Controller/HomePhotosDetailViewController.swift
+50
-4
HomeVideoDetailController.swift
...s/Session/Home/Controller/HomeVideoDetailController.swift
+47
-2
No files found.
PhoneManager/Class/Session/Advertisement/Manager/AdvManager.swift
View file @
d95f378d
...
@@ -13,6 +13,9 @@ class AdvManager : NSObject,FullScreenContentDelegate {
...
@@ -13,6 +13,9 @@ class AdvManager : NSObject,FullScreenContentDelegate {
static
let
shared
:
AdvManager
=
AdvManager
()
static
let
shared
:
AdvManager
=
AdvManager
()
// 看完广告的回调
var
finisedCallBack
:()
->
Void
=
{}
// 激励插页广告
// 激励插页广告
var
rewardedInterstitialAd
:
RewardedInterstitialAd
?
var
rewardedInterstitialAd
:
RewardedInterstitialAd
?
...
@@ -26,7 +29,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
...
@@ -26,7 +29,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
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秒
// 进入页面之后30秒
var
advTimeAfterInAPP
:
Int
=
30
000
var
advTimeAfterInAPP
:
Int
=
30
var
timer
:
Timer
?
var
timer
:
Timer
?
...
@@ -128,6 +131,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
...
@@ -128,6 +131,7 @@ class AdvManager : NSObject,FullScreenContentDelegate {
// 更新值
// 更新值
updateAdvStrategyValue
()
updateAdvStrategyValue
()
finisedCallBack
()
}
}
...
...
PhoneManager/Class/Session/Advertisement/
Controller/AdvTipDeleteController
.swift
→
PhoneManager/Class/Session/Advertisement/
View/AdvTipDeleteView
.swift
View file @
d95f378d
//
//
// AdvTipDelete
Controller
.swift
// AdvTipDelete
View
.swift
// PhoneManager
// PhoneManager
//
//
// Created by edy on 2025/4/
18
.
// Created by edy on 2025/4/
21
.
//
//
import
Foundation
import
Foundation
...
@@ -30,7 +30,9 @@ struct AdvTipModel {
...
@@ -30,7 +30,9 @@ struct AdvTipModel {
}
}
}
}
class
AdvTipDeleteController
:
BaseViewController
{
class
AdvTipDeleteView
:
UIView
{
var
deleteButtonClickCallback
:
(
Bool
)
->
Void
=
{
isMore
in
}
var
deleteType
:
TipDeleteType
?
var
deleteType
:
TipDeleteType
?
// getOtherInfoByType()
// getOtherInfoByType()
...
@@ -42,29 +44,11 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -42,29 +44,11 @@ class AdvTipDeleteController : BaseViewController {
// self.collectionView.reloadData()
// self.collectionView.reloadData()
// }, completion: nil)
// }, completion: nil)
var
tipDeleteModel
:
AdvTipModel
?
var
tipDeleteModel
:
AdvTipModel
=
AdvTipModel
(
titleText
:
""
,
detailTitleText
:
""
,
showLessButton
:
false
,
deleteMoreText
:
""
,
deleteLessText
:
""
)
// {
// didSet{
// DispatchQueue.main.async {
// self.tipTitle.text = self.tipDeleteModel.titleText
// self.tipDetailTitle.text = self.tipDeleteModel.detailTitleText
// self.deleteMoreButton.setTitle(self.tipDeleteModel.deleteMoreText, for: .normal)
// self.deleteLessButton.setTitle(self.tipDeleteModel.deleteLessText, for: .normal)
// }
// }
// }
lazy
var
shadowView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.5000
)
return
view
}()
lazy
var
tipView
:
UIView
=
{
lazy
var
tipView
:
UIView
=
{
let
view
=
UIView
()
let
view
=
UIView
()
view
.
backgroundColor
=
.
white
view
.
backgroundColor
=
.
white
...
@@ -85,6 +69,7 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -85,6 +69,7 @@ class AdvTipDeleteController : BaseViewController {
view
.
numberOfLines
=
0
view
.
numberOfLines
=
0
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
view
.
textColor
=
UIColor
(
red
:
0.1
,
green
:
0.1
,
blue
:
0.1
,
alpha
:
1
)
view
.
textColor
=
UIColor
(
red
:
0.1
,
green
:
0.1
,
blue
:
0.1
,
alpha
:
1
)
view
.
textAlignment
=
.
center
return
view
return
view
}()
}()
...
@@ -93,6 +78,7 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -93,6 +78,7 @@ class AdvTipDeleteController : BaseViewController {
view
.
numberOfLines
=
0
view
.
numberOfLines
=
0
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
,
weight
:
.
regular
)
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
,
weight
:
.
regular
)
view
.
textColor
=
UIColor
(
red
:
0.4
,
green
:
0.4
,
blue
:
0.4
,
alpha
:
1
)
view
.
textColor
=
UIColor
(
red
:
0.4
,
green
:
0.4
,
blue
:
0.4
,
alpha
:
1
)
view
.
textAlignment
=
.
center
return
view
return
view
}()
}()
...
@@ -100,7 +86,6 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -100,7 +86,6 @@ class AdvTipDeleteController : BaseViewController {
let
layout
=
UICollectionViewFlowLayout
()
let
layout
=
UICollectionViewFlowLayout
()
layout
.
scrollDirection
=
.
horizontal
layout
.
scrollDirection
=
.
horizontal
layout
.
minimumInteritemSpacing
=
8
layout
.
minimumInteritemSpacing
=
8
layout
.
minimumLineSpacing
=
0
let
collectionView
=
UICollectionView
(
frame
:
.
zero
,
collectionViewLayout
:
layout
)
let
collectionView
=
UICollectionView
(
frame
:
.
zero
,
collectionViewLayout
:
layout
)
collectionView
.
dataSource
=
self
collectionView
.
dataSource
=
self
collectionView
.
delegate
=
self
collectionView
.
delegate
=
self
...
@@ -118,6 +103,8 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -118,6 +103,8 @@ class AdvTipDeleteController : BaseViewController {
view
.
clipsToBounds
=
true
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
24
view
.
layer
.
cornerRadius
=
24
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
setImage
(
UIImage
(
named
:
"ic_ad_pop"
),
for
:
.
normal
)
view
.
addTarget
(
self
,
action
:
#selector(
deleteMoreButtonSelect
)
,
for
:
.
touchUpInside
)
return
view
return
view
}()
}()
...
@@ -129,16 +116,14 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -129,16 +116,14 @@ class AdvTipDeleteController : BaseViewController {
view
.
clipsToBounds
=
true
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
24
view
.
layer
.
cornerRadius
=
24
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
addTarget
(
self
,
action
:
#selector(
deleteLessButtonSelect
)
,
for
:
.
touchUpInside
)
return
view
return
view
}()
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
self
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.5000
)
override
func
viewDidLoad
()
{
self
.
addSubview
(
self
.
tipView
)
super
.
viewDidLoad
()
self
.
view
.
addSubview
(
shadowView
)
self
.
shadowView
.
addSubview
(
self
.
tipView
)
self
.
tipView
.
addSubview
(
self
.
closeButton
)
self
.
tipView
.
addSubview
(
self
.
closeButton
)
self
.
tipView
.
addSubview
(
self
.
tipTitle
)
self
.
tipView
.
addSubview
(
self
.
tipTitle
)
self
.
tipView
.
addSubview
(
self
.
tipDetailTitle
)
self
.
tipView
.
addSubview
(
self
.
tipDetailTitle
)
...
@@ -149,10 +134,6 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -149,10 +134,6 @@ class AdvTipDeleteController : BaseViewController {
self
.
shadowView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
top
.
bottom
.
equalToSuperview
()
}
self
.
tipView
.
snp
.
makeConstraints
{
make
in
self
.
tipView
.
snp
.
makeConstraints
{
make
in
make
.
center
.
equalToSuperview
()
make
.
center
.
equalToSuperview
()
make
.
width
.
equalTo
(
345
)
make
.
width
.
equalTo
(
345
)
...
@@ -188,47 +169,37 @@ class AdvTipDeleteController : BaseViewController {
...
@@ -188,47 +169,37 @@ class AdvTipDeleteController : BaseViewController {
make
.
height
.
equalTo
(
48
)
make
.
height
.
equalTo
(
48
)
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
}
}
self
.
delete
More
Button
.
snp
.
makeConstraints
{
make
in
self
.
delete
Less
Button
.
snp
.
makeConstraints
{
make
in
make
.
top
.
equalTo
(
self
.
deleteMoreButton
.
snp
.
bottom
)
.
offset
(
4
)
make
.
top
.
equalTo
(
self
.
deleteMoreButton
.
snp
.
bottom
)
.
offset
(
4
)
make
.
width
.
equalTo
(
305
)
make
.
width
.
equalTo
(
305
)
make
.
height
.
equalTo
(
48
)
make
.
height
.
equalTo
(
48
)
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
}
}
}
}
}
class
ImageCell
:
UICollectionViewCell
{
static
let
reuseIdentifier
=
"ImageCell"
let
imageView
:
UIImageView
=
{
let
imageView
=
UIImageView
()
imageView
.
contentMode
=
.
scaleAspectFill
imageView
.
clipsToBounds
=
true
imageView
.
layer
.
cornerRadius
=
12
return
imageView
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
contentView
.
addSubview
(
imageView
)
imageView
.
frame
=
contentView
.
bounds
}
required
init
?(
coder
:
NSCoder
)
{
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
fatalError
(
"init(coder:) has not been implemented"
)
}
}
}
extension
AdvTipDeleteController
:
UICollectionViewDataSource
,
UICollectionViewDelegateFlowLayout
{
}
func
getOtherInfoByType
()
{
extension
AdvTipDeleteView
:
UICollectionViewDataSource
,
UICollectionViewDelegateFlowLayout
{
func
getOtherInfoByType
(
type
:
PhotsFileType
)
{
// 首先获取第一个button显示的内容
// 首先获取第一个button显示的内容
let
photosCount
=
self
.
dataSource
!.
count
>
25
?
25
:
self
.
dataSource
?
.
count
let
photosCount
=
self
.
dataSource
!.
count
>
25
?
25
:
self
.
dataSource
?
.
count
let
deleteButtonTitle
=
"Delete
\(
String
(
describing
:
photosCount
)
)
Duplicates"
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"
}
else
{
deleteLessText
=
"Delete Only
\(
freeDeleteCount
)
Photos"
}
switch
self
.
deleteType
{
switch
self
.
deleteType
{
...
@@ -237,7 +208,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
...
@@ -237,7 +208,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
titleText
:
"Watch a rewarded ad to delete photos"
,
titleText
:
"Watch a rewarded ad to delete photos"
,
detailTitleText
:
"You need to watch an ad to delete 25 photos with the free version."
,
detailTitleText
:
"You need to watch an ad to delete 25 photos with the free version."
,
showLessButton
:
true
,
showLessButton
:
true
,
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
"Delete Only 5 Photos"
)
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
deleteLessText
)
case
.
deletePhotoOne
:
case
.
deletePhotoOne
:
self
.
tipDeleteModel
=
AdvTipModel
.
init
(
self
.
tipDeleteModel
=
AdvTipModel
.
init
(
titleText
:
"Watch a rewarded ad to delete photos"
,
titleText
:
"Watch a rewarded ad to delete photos"
,
...
@@ -249,7 +220,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
...
@@ -249,7 +220,7 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
titleText
:
"Watch a rewarded ad to delete videos"
,
titleText
:
"Watch a rewarded ad to delete videos"
,
detailTitleText
:
"You need to watch an ad to delete 25 videos with the free version."
,
detailTitleText
:
"You need to watch an ad to delete 25 videos with the free version."
,
showLessButton
:
true
,
showLessButton
:
true
,
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
"Delete Only 5 Photos"
)
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
deleteLessText
)
case
.
deleteVideoOne
:
case
.
deleteVideoOne
:
self
.
tipDeleteModel
=
AdvTipModel
.
init
(
self
.
tipDeleteModel
=
AdvTipModel
.
init
(
titleText
:
"Watch a rewarded ad to delete videos"
,
titleText
:
"Watch a rewarded ad to delete videos"
,
...
@@ -264,6 +235,12 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
...
@@ -264,6 +235,12 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
""
)
deleteMoreText
:
deleteButtonTitle
,
deleteLessText
:
""
)
}
}
DispatchQueue
.
main
.
async
{
self
.
tipTitle
.
text
=
self
.
tipDeleteModel
.
titleText
self
.
tipDetailTitle
.
text
=
self
.
tipDeleteModel
.
detailTitleText
self
.
deleteMoreButton
.
setTitle
(
self
.
tipDeleteModel
.
deleteMoreText
,
for
:
.
normal
)
self
.
deleteLessButton
.
setTitle
(
self
.
tipDeleteModel
.
deleteLessText
,
for
:
.
normal
)
}
}
}
...
@@ -282,9 +259,43 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
...
@@ -282,9 +259,43 @@ extension AdvTipDeleteController:UICollectionViewDataSource, UICollectionViewDel
return
CGSize
(
width
:
104
,
height
:
104
)
return
CGSize
(
width
:
104
,
height
:
104
)
}
}
func
collectionView
(
_
collectionView
:
UICollectionView
,
layout
collectionViewLayout
:
UICollectionViewLayout
,
minimumLineSpacingForSectionAt
section
:
Int
)
->
CGFloat
{
return
8
}
@objc
func
closeButtonAction
(){
@objc
func
closeButtonAction
(){
self
.
dismiss
(
animated
:
false
)
self
.
removeFromSuperview
()
}
@objc
func
deleteMoreButtonSelect
()
{
deleteButtonClickCallback
(
true
)
}
@objc
func
deleteLessButtonSelect
()
{
deleteButtonClickCallback
(
false
)
}
}
class
ImageCell
:
UICollectionViewCell
{
static
let
reuseIdentifier
=
"ImageCell"
let
imageView
:
UIImageView
=
{
let
imageView
=
UIImageView
()
imageView
.
contentMode
=
.
scaleAspectFill
imageView
.
clipsToBounds
=
true
imageView
.
layer
.
cornerRadius
=
12
return
imageView
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
contentView
.
addSubview
(
imageView
)
imageView
.
frame
=
contentView
.
bounds
}
required
init
?(
coder
:
NSCoder
)
{
fatalError
(
"init(coder:) has not been implemented"
)
}
}
}
}
PhoneManager/Class/Session/Advertisement/
Controller/AdvTipSelectController
.swift
→
PhoneManager/Class/Session/Advertisement/
View/AdvTipSelectView
.swift
View file @
d95f378d
//
//
// AdvTipSelect
Controller
.swift
// AdvTipSelect
View
.swift
// PhoneManager
// PhoneManager
//
//
// Created by edy on 2025/4/
18
.
// Created by edy on 2025/4/
21
.
//
//
import
Foundation
import
Foundation
enum
TipSelectType
{
enum
TipSelectType
{
case
selectTypeCompressVideo
case
selectTypeCompressVideo
case
selectTypeCompressPhoto
case
selectTypeCompressPhoto
...
@@ -28,38 +27,22 @@ struct AdvTipSelectModel {
...
@@ -28,38 +27,22 @@ struct AdvTipSelectModel {
}
}
}
}
class
AdvTipSelectController
:
UIViewController
{
@MainActor
required
init
?(
coder
:
NSCoder
)
{
class
AdvTipSelectView
:
UIView
{
fatalError
(
"init(coder:) has not been implemented"
)
}
var
selectType
:
TipSelectType
{
didSet
{
getOtherInfoByType
()
}
}
var
selectClickCallback
:
(
Bool
)
->
Void
=
{
isSrue
in
}
var
tipSelectModel
:
AdvTipSelectModel
{
required
init
?(
coder
:
NSCoder
)
{
didSet
{
fatalError
(
"init(coder:) has not been implemented"
)
DispatchQueue
.
main
.
async
{
self
.
tipTitle
.
text
=
self
.
tipSelectModel
.
titleText
self
.
tipDetailTitle
.
text
=
self
.
tipSelectModel
.
detailTitleText
self
.
firstButton
.
setTitle
(
self
.
tipSelectModel
.
deleteMoreText
,
for
:
.
normal
)
self
.
secondButton
.
setTitle
(
self
.
tipSelectModel
.
deleteLessText
,
for
:
.
normal
)
}
}
}
}
var
selectType
:
TipSelectType
?
var
tipSelectModel
:
AdvTipSelectModel
?
lazy
var
shadowView
:
UIView
=
{
let
view
=
UIView
()
view
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.5000
)
return
view
}()
lazy
var
tipView
:
UIView
=
{
lazy
var
tipView
:
UIView
=
{
let
view
=
UIView
()
let
view
=
UIView
()
...
@@ -89,6 +72,7 @@ class AdvTipSelectController : UIViewController {
...
@@ -89,6 +72,7 @@ class AdvTipSelectController : UIViewController {
view
.
numberOfLines
=
0
view
.
numberOfLines
=
0
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
20
,
weight
:
.
bold
)
view
.
textColor
=
UIColor
(
red
:
0.1
,
green
:
0.1
,
blue
:
0.1
,
alpha
:
1
)
view
.
textColor
=
UIColor
(
red
:
0.1
,
green
:
0.1
,
blue
:
0.1
,
alpha
:
1
)
view
.
textAlignment
=
.
center
return
view
return
view
}()
}()
...
@@ -97,6 +81,7 @@ class AdvTipSelectController : UIViewController {
...
@@ -97,6 +81,7 @@ class AdvTipSelectController : UIViewController {
view
.
numberOfLines
=
0
view
.
numberOfLines
=
0
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
,
weight
:
.
regular
)
view
.
font
=
UIFont
.
systemFont
(
ofSize
:
14
,
weight
:
.
regular
)
view
.
textColor
=
UIColor
(
red
:
0.4
,
green
:
0.4
,
blue
:
0.4
,
alpha
:
1
)
view
.
textColor
=
UIColor
(
red
:
0.4
,
green
:
0.4
,
blue
:
0.4
,
alpha
:
1
)
view
.
textAlignment
=
.
center
return
view
return
view
}()
}()
...
@@ -109,6 +94,8 @@ class AdvTipSelectController : UIViewController {
...
@@ -109,6 +94,8 @@ class AdvTipSelectController : UIViewController {
view
.
clipsToBounds
=
true
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
24
view
.
layer
.
cornerRadius
=
24
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
setImage
(
UIImage
(
named
:
"ic_ad_pop"
),
for
:
.
normal
)
view
.
addTarget
(
self
,
action
:
#selector(
buttonSureSelectAction
)
,
for
:
.
touchUpInside
)
return
view
return
view
}()
}()
...
@@ -120,16 +107,17 @@ class AdvTipSelectController : UIViewController {
...
@@ -120,16 +107,17 @@ class AdvTipSelectController : UIViewController {
view
.
clipsToBounds
=
true
view
.
clipsToBounds
=
true
view
.
layer
.
cornerRadius
=
24
view
.
layer
.
cornerRadius
=
24
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
titleLabel
?
.
font
=
UIFont
.
systemFont
(
ofSize
:
16
,
weight
:
.
bold
)
view
.
addTarget
(
self
,
action
:
#selector(
buttonCancelSelectAction
)
,
for
:
.
touchUpInside
)
return
view
return
view
}()
}()
override
init
(
frame
:
CGRect
)
{
super
.
init
(
frame
:
frame
)
self
.
backgroundColor
=
UIColor
(
red
:
0
,
green
:
0
,
blue
:
0
,
alpha
:
0.5000
)
override
func
viewDidLoad
()
{
self
.
addSubview
(
self
.
tipView
)
super
.
viewDidLoad
()
self
.
view
.
addSubview
(
shadowView
)
self
.
shadowView
.
addSubview
(
self
.
tipView
)
self
.
tipView
.
addSubview
(
self
.
closeButton
)
self
.
tipView
.
addSubview
(
self
.
closeButton
)
self
.
tipView
.
addSubview
(
self
.
logoView
)
self
.
tipView
.
addSubview
(
self
.
logoView
)
self
.
tipView
.
addSubview
(
self
.
tipTitle
)
self
.
tipView
.
addSubview
(
self
.
tipTitle
)
...
@@ -140,9 +128,6 @@ class AdvTipSelectController : UIViewController {
...
@@ -140,9 +128,6 @@ class AdvTipSelectController : UIViewController {
self
.
shadowView
.
snp
.
makeConstraints
{
make
in
make
.
left
.
right
.
top
.
bottom
.
equalToSuperview
()
}
self
.
tipView
.
snp
.
makeConstraints
{
make
in
self
.
tipView
.
snp
.
makeConstraints
{
make
in
make
.
center
.
equalToSuperview
()
make
.
center
.
equalToSuperview
()
...
@@ -187,10 +172,13 @@ class AdvTipSelectController : UIViewController {
...
@@ -187,10 +172,13 @@ class AdvTipSelectController : UIViewController {
make
.
height
.
equalTo
(
48
)
make
.
height
.
equalTo
(
48
)
make
.
centerX
.
equalToSuperview
()
make
.
centerX
.
equalToSuperview
()
}
}
}
}
}
}
extension
AdvTipSelectController
{
extension
AdvTipSelectView
{
func
getOtherInfoByType
()
{
func
getOtherInfoByType
()
{
switch
self
.
selectType
{
switch
self
.
selectType
{
case
.
selectTypeCompressVideo
:
case
.
selectTypeCompressVideo
:
...
@@ -208,10 +196,26 @@ extension AdvTipSelectController {
...
@@ -208,10 +196,26 @@ extension AdvTipSelectController {
titleText
:
"Watch a rewarded ad to set Pro Animations"
,
titleText
:
"Watch a rewarded ad to set Pro Animations"
,
detailTitleText
:
"You need to watch an ad to set amazing animations that are unlimited for pro users."
,
detailTitleText
:
"You need to watch an ad to set amazing animations that are unlimited for pro users."
,
deleteMoreText
:
"Set Animation"
,
deleteLessText
:
"Cancel"
)
deleteMoreText
:
"Set Animation"
,
deleteLessText
:
"Cancel"
)
case
.
none
:
self
.
tipSelectModel
=
AdvTipSelectModel
.
init
(
titleText
:
""
,
detailTitleText
:
""
,
deleteMoreText
:
""
,
deleteLessText
:
""
)
}
}
self
.
tipTitle
.
text
=
self
.
tipSelectModel
?
.
titleText
self
.
tipDetailTitle
.
text
=
self
.
tipSelectModel
?
.
detailTitleText
self
.
firstButton
.
setTitle
(
self
.
tipSelectModel
?
.
deleteMoreText
,
for
:
.
normal
)
self
.
secondButton
.
setTitle
(
self
.
tipSelectModel
?
.
deleteLessText
,
for
:
.
normal
)
}
}
@objc
func
closeButtonAction
(){
@objc
func
closeButtonAction
(){
self
.
view
.
removeFromSuperview
()
self
.
removeFromSuperview
()
}
@objc
func
buttonSureSelectAction
(){
self
.
selectClickCallback
(
true
)
self
.
removeFromSuperview
()
}
}
@objc
func
buttonCancelSelectAction
(){
self
.
removeFromSuperview
()
}
}
}
PhoneManager/Class/Session/Charge/Controller/ChargeInfoViewController.swift
View file @
d95f378d
...
@@ -50,6 +50,25 @@ class ChargeInfoViewController:BaseViewController {
...
@@ -50,6 +50,25 @@ class ChargeInfoViewController:BaseViewController {
sview
.
flag
=
self
.
flag
sview
.
flag
=
self
.
flag
sview
.
isHidden
=
type
==
.
setting
?
false
:
true
sview
.
isHidden
=
type
==
.
setting
?
false
:
true
sview
.
settingCallBack
=
{
if
HomePayModel
.
share
.
isNoAd
==
false
{
// 弹出提示框
let
alertView
=
AdvTipSelectView
(
frame
:
self
.
view
.
bounds
)
alertView
.
selectType
=
.
selectTypeSetAnimation
alertView
.
getOtherInfoByType
()
self
.
view
.
addSubview
(
alertView
)
alertView
.
selectClickCallback
=
{
isSure
in
self
.
popAdverTisement
()
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
setAnimation
()
}
}
}
else
{
self
.
setAnimation
()
}
}
return
sview
return
sview
}()
}()
...
@@ -157,4 +176,41 @@ class ChargeInfoViewController:BaseViewController {
...
@@ -157,4 +176,41 @@ class ChargeInfoViewController:BaseViewController {
isShowSettingView
=
!
(
isShowSettingView
??
false
)
isShowSettingView
=
!
(
isShowSettingView
??
false
)
isShowBack
=
!
(
isShowBack
??
false
)
isShowBack
=
!
(
isShowBack
??
false
)
}
}
func
setAnimation
(){
// 存储到userDefaults
UserDefaults
.
standard
.
set
(
String
(
self
.
flag
!
),
forKey
:
"chargePicInfo"
)
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Done!"
,
preferredStyle
:
.
alert
)
self
.
present
(
alert
,
animated
:
true
,
completion
:
nil
)
// 2 秒后关闭弹窗
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
alert
.
dismiss
(
animated
:
true
,
completion
:
nil
)
// 是否是第一次进入
let
chargeGuideFinished
=
UserDefaults
.
standard
.
object
(
forKey
:
"ChargeGuideFinished"
)
if
chargeGuideFinished
==
nil
{
let
vc
:
ChargeGuideStartController
=
ChargeGuideStartController
()
vc
.
modalPresentationStyle
=
.
fullScreen
self
.
present
(
vc
,
animated
:
true
)
vc
.
callback
=
{[
weak
self
]
text
in
guard
let
self
else
{
return
}
let
vc
:
ChargeGuideController
=
ChargeGuideController
()
self
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
UserDefaults
.
standard
.
set
(
"ChargeGuideFinished"
,
forKey
:
"ChargeGuideFinished"
)
}
else
{
self
.
navigationController
?
.
popViewController
(
animated
:
true
)
}
}
}
/// 弹出广告
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
}
}
}
PhoneManager/Class/Session/Charge/View/ChargeInfoSettingView.swift
View file @
d95f378d
...
@@ -9,6 +9,8 @@ import UIKit
...
@@ -9,6 +9,8 @@ import UIKit
class
ChargeInfoSettingView
:
UIView
{
class
ChargeInfoSettingView
:
UIView
{
var
settingCallBack
:()
->
Void
=
{}
var
model
:
ChargeDataModel
?
var
model
:
ChargeDataModel
?
var
flag
:
Int
?
var
flag
:
Int
?
...
@@ -52,34 +54,12 @@ class ChargeInfoSettingView:UIView {
...
@@ -52,34 +54,12 @@ class ChargeInfoSettingView:UIView {
}
}
@objc
func
settingBtnClick
()
{
@objc
func
settingBtnClick
()
{
// 存储到userDefaults
UserDefaults
.
standard
.
set
(
String
(
flag
!
),
forKey
:
"chargePicInfo"
)
self
.
settingCallBack
()
let
alert
=
UIAlertController
(
title
:
nil
,
message
:
"Done!"
,
preferredStyle
:
.
alert
)
self
.
responderViewController
()?
.
present
(
alert
,
animated
:
true
,
completion
:
nil
)
// 2 秒后关闭弹窗
DispatchQueue
.
main
.
asyncAfter
(
deadline
:
.
now
()
+
1
)
{
alert
.
dismiss
(
animated
:
true
,
completion
:
nil
)
// 是否是第一次进入
let
chargeGuideFinished
=
UserDefaults
.
standard
.
object
(
forKey
:
"ChargeGuideFinished"
)
if
chargeGuideFinished
==
nil
{
let
vc
:
ChargeGuideStartController
=
ChargeGuideStartController
()
vc
.
modalPresentationStyle
=
.
fullScreen
self
.
responderViewController
()?
.
present
(
vc
,
animated
:
true
)
vc
.
callback
=
{[
weak
self
]
text
in
guard
let
self
else
{
return
}
let
vc
:
ChargeGuideController
=
ChargeGuideController
()
self
.
responderViewController
()?
.
navigationController
?
.
pushViewController
(
vc
,
animated
:
true
)
}
UserDefaults
.
standard
.
set
(
"ChargeGuideFinished"
,
forKey
:
"ChargeGuideFinished"
)
}
else
{
self
.
responderViewController
()?
.
navigationController
?
.
popViewController
(
animated
:
true
)
}
}
}
}
}
}
PhoneManager/Class/Session/Compress/Controller/CompressController.swift
View file @
d95f378d
...
@@ -323,8 +323,19 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
...
@@ -323,8 +323,19 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
if
HomePayModel
.
share
.
isNoAd
==
false
{
if
HomePayModel
.
share
.
isNoAd
==
false
{
HomePayViewController
.
show
{
HomePayViewController
.
show
{
// 弹出提示框
let
alertView
=
AdvTipSelectView
(
frame
:
self
.
view
.
bounds
)
alertView
.
selectType
=
.
selectTypeCompressPhoto
alertView
.
getOtherInfoByType
()
self
.
view
.
addSubview
(
alertView
)
alertView
.
selectClickCallback
=
{
isSure
in
self
.
popAdverTisement
()
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
jumpToNextPage
()
self
.
jumpToNextPage
()
}
}
}
}
}
else
{
}
else
{
self
.
jumpToNextPage
()
self
.
jumpToNextPage
()
}
}
...
@@ -332,6 +343,11 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
...
@@ -332,6 +343,11 @@ extension CompressController:WaterfallMutiSectionDelegate,UICollectionViewDataSo
}
}
/// 弹出广告
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
}
func
jumpToNextPage
(){
func
jumpToNextPage
(){
// 先将值传到下一个页面
// 先将值传到下一个页面
let
vc
:
CompressQualityController
=
CompressQualityController
()
let
vc
:
CompressQualityController
=
CompressQualityController
()
...
...
PhoneManager/Class/Session/Home/Controller/HomeInfoViewController.swift
View file @
d95f378d
...
@@ -62,47 +62,6 @@ class HomeInfoViewController:BaseViewController {
...
@@ -62,47 +62,6 @@ class HomeInfoViewController:BaseViewController {
sview
.
deleteCallBack
=
{
[
weak
self
]
array
in
sview
.
deleteCallBack
=
{
[
weak
self
]
array
in
guard
let
self
=
self
else
{
return
}
guard
let
self
=
self
else
{
return
}
// 首先看是否订阅
if
HomePayModel
.
share
.
isNoAd
==
false
{
// 没有订阅
// 获取当前免费次数
let
freeCount
=
AdvManager
.
shared
.
defaultFreeTimes
// 获取次数对应的删除照片数量
let
freeDeleteCount
=
AdvManager
.
shared
.
advDeleteResouceDic
[
freeCount
]
!
Print
(
freeDeleteCount
)
// 如果数量等于0
if
freeDeleteCount
==
0
{
// 弹出单个删除类型
// 跳弹窗
let
vc
:
AdvTipDeleteController
=
AdvTipDeleteController
()
vc
.
modalPresentationStyle
=
.
fullScreen
self
.
present
(
vc
,
animated
:
true
)
}
else
{
let
tempArray
=
array
as!
[
AssetModel
]
// 如果小于
if
tempArray
.
count
>
freeDeleteCount
{
// 弹出多个删除类型
}
}
}
let
deleteOp
:((
Any
)
->
Void
)
=
{[
weak
self
]
imgs
in
let
deleteOp
:((
Any
)
->
Void
)
=
{[
weak
self
]
imgs
in
if
let
cA
=
imgs
as?
[
AssetModel
]
{
if
let
cA
=
imgs
as?
[
AssetModel
]
{
var
tempStringArray
:
[
String
]
=
[]
var
tempStringArray
:
[
String
]
=
[]
...
@@ -136,12 +95,70 @@ class HomeInfoViewController:BaseViewController {
...
@@ -136,12 +95,70 @@ class HomeInfoViewController:BaseViewController {
}
}
}
}
// 首先看是否订阅
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
=
array
as?
[
AssetModel
]
if
freeDeleteCount
==
0
{
// 弹出单个删除类型
view
.
deleteType
=
.
deletePhotoOne
view
.
getOtherInfoByType
(
type
:
self
.
type
!
)
self
.
view
.
addSubview
(
view
)
}
else
{
let
tempArray
=
array
as!
[
AssetModel
]
// 如果小于
if
tempArray
.
count
>
freeDeleteCount
{
// 弹出多个删除类型
view
.
deleteType
=
.
deletePhotosMore
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
=
{
if
HomePayModel
.
share
.
isNoAd
==
false
{
deleteOp
(
array
)
// 重复
}
}
}
else
if
self
.
type
==
.
similar
{
// 相似
HomeNoAdsViewController
.
show
{
self
.
popAdverTisement
()
// 广告看完再结束
AdvManager
.
shared
.
finisedCallBack
=
{
deleteOp
(
array
)
}
}
}
else
{
HomeNoAdsViewController
.
show
{
self
.
popAdverTisement
()
// 广告看完再结束
AdvManager
.
shared
.
finisedCallBack
=
{
deleteOp
(
array
)
}
}
}
// 广告
}
else
{
if
self
.
type
==
.
duplicates
{
if
self
.
type
==
.
duplicates
{
HomePayViewController
.
show
{
HomePayViewController
.
show
{
...
@@ -157,11 +174,47 @@ class HomeInfoViewController:BaseViewController {
...
@@ -157,11 +174,47 @@ class HomeInfoViewController:BaseViewController {
deleteOp
(
array
)
deleteOp
(
array
)
}
}
}
}
}
}
}
else
{
}
else
{
deleteOp
(
array
)
deleteOp
(
array
)
}
}
//
// if HomePayModel.share.isNoAd == false {
// // 重复
// if self.type == .duplicates {
// HomePayViewController.show {
//
// deleteOp(array)
// }
// }else if self.type == .similar {
// // 相似
// HomeNoAdsViewController.show {
// deleteOp(array)
// }
// }else{
// HomeNoAdsViewController.show {
// deleteOp(array)
// }
// }
// }else {
// deleteOp(array)
// }
//
}
}
return
sview
return
sview
...
@@ -180,10 +233,8 @@ class HomeInfoViewController:BaseViewController {
...
@@ -180,10 +233,8 @@ class HomeInfoViewController:BaseViewController {
/// 弹出广告
/// 弹出广告
func
popAdverTisement
(){
func
popAdverTisement
(){
if
AdvManager
.
shared
.
advTimeAfterInAPP
<=
0
{
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
}
}
}
// 由于继承自 UIViewController,必须实现这个必需的构造器
// 由于继承自 UIViewController,必须实现这个必需的构造器
required
init
?(
coder
:
NSCoder
)
{
required
init
?(
coder
:
NSCoder
)
{
...
...
PhoneManager/Class/Session/Home/Controller/HomePhotosDetailViewController.swift
View file @
d95f378d
...
@@ -380,14 +380,60 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
...
@@ -380,14 +380,60 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
@objc
func
deleteButtonAction
(){
@objc
func
deleteButtonAction
(){
if
HomePayModel
.
share
.
isNoAd
==
false
{
if
HomePayModel
.
share
.
isNoAd
==
false
{
// 没有订阅
// 获取当前免费次数
let
freeCount
=
AdvManager
.
shared
.
defaultFreeTimes
// 获取次数对应的删除照片数量
let
freeDeleteCount
=
AdvManager
.
shared
.
advDeleteResouceDic
[
freeCount
]
!
Print
(
freeDeleteCount
)
// 如果数量等于0
let
view
:
AdvTipDeleteView
=
AdvTipDeleteView
(
frame
:
self
.
view
.
bounds
)
view
.
dataSource
=
self
.
selectedModel
if
freeDeleteCount
==
0
{
// 弹出单个删除类型
view
.
deleteType
=
.
deletePhotoOne
view
.
getOtherInfoByType
(
type
:
self
.
mediaType
!
)
self
.
view
.
addSubview
(
view
)
}
else
{
let
tempArray
=
self
.
selectedModel
// 如果小于
if
tempArray
.
count
>
freeDeleteCount
{
// 弹出多个删除类型
view
.
deleteType
=
.
deletePhotosMore
view
.
getOtherInfoByType
(
type
:
self
.
mediaType
!
)
self
.
view
.
addSubview
(
view
)
}
}
view
.
deleteButtonClickCallback
=
{
isMore
in
if
isMore
==
true
{
// 先弹出充会员,然后结束之后弹广告
HomePayViewController
.
show
{
HomePayViewController
.
show
{
self
.
popAdverTisement
()
// 广告看完再结束
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
deleteAction
()
self
.
deleteAction
()
}
}
}
// 广告
}
else
{
HomePayViewController
.
show
{
self
.
deleteAction
()
}
}
}
}
else
{
}
else
{
self
.
deleteAction
()
self
.
deleteAction
()
}
}
}
/// 弹出广告
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
}
}
func
deleteAction
(){
func
deleteAction
(){
// 删除当前选择
// 删除当前选择
...
...
PhoneManager/Class/Session/Home/Controller/HomeVideoDetailController.swift
View file @
d95f378d
...
@@ -322,14 +322,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
...
@@ -322,14 +322,59 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
@objc
func
deleteButtonAction
(){
@objc
func
deleteButtonAction
(){
if
HomePayModel
.
share
.
isNoAd
==
false
{
if
HomePayModel
.
share
.
isNoAd
==
false
{
// 获取当前免费次数
let
freeCount
=
AdvManager
.
shared
.
defaultFreeTimes
// 获取次数对应的删除照片数量
let
freeDeleteCount
=
AdvManager
.
shared
.
advDeleteResouceDic
[
freeCount
]
!
Print
(
freeDeleteCount
)
// 如果数量等于0
let
view
:
AdvTipDeleteView
=
AdvTipDeleteView
(
frame
:
self
.
view
.
bounds
)
view
.
dataSource
=
self
.
selectedModel
if
freeDeleteCount
==
0
{
// 弹出单个删除类型
view
.
deleteType
=
.
deletePhotoOne
view
.
getOtherInfoByType
(
type
:
.
videos
)
self
.
view
.
addSubview
(
view
)
}
else
{
let
tempArray
=
self
.
selectedModel
// 如果小于
if
tempArray
.
count
>
freeDeleteCount
{
// 弹出多个删除类型
view
.
deleteType
=
.
deletePhotosMore
view
.
getOtherInfoByType
(
type
:
.
videos
)
self
.
view
.
addSubview
(
view
)
}
}
view
.
deleteButtonClickCallback
=
{
isMore
in
if
isMore
==
true
{
// 先弹出充会员,然后结束之后弹广告
HomePayViewController
.
show
{
self
.
popAdverTisement
()
// 广告看完再结束
AdvManager
.
shared
.
finisedCallBack
=
{
self
.
deleteAction
()
}
}
// 广告
}
else
{
HomePayViewController
.
show
{
HomePayViewController
.
show
{
self
.
deleteAction
()
self
.
deleteAction
()
}
}
}
}
}
else
{
}
else
{
self
.
deleteAction
()
self
.
deleteAction
()
}
}
}
}
/// 弹出广告
func
popAdverTisement
(){
AdvManager
.
shared
.
showInterstitialAd
(
vc
:
self
)
}
func
deleteAction
(){
func
deleteAction
(){
// 删除当前选择
// 删除当前选择
let
fetchResult
=
PHAsset
.
fetchAssets
(
withLocalIdentifiers
:
self
.
selectedModel
.
map
{
$0
.
localIdentifier
},
options
:
nil
)
let
fetchResult
=
PHAsset
.
fetchAssets
(
withLocalIdentifiers
:
self
.
selectedModel
.
map
{
$0
.
localIdentifier
},
options
:
nil
)
...
...
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