123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- //
- // TSLaunchVC.swift
- // TSLiveWallpaper
- //
- // Created by 100Years on 2024/12/20.
- //
- import Alamofire
- import UIKit
- class TSLaunchVC: UIViewController {
- var dismissHandler: (() -> Void)?
- // 定时器
- private var timer: DispatchSourceTimer?
- // 闪屏页剩余显示时长
- #if DEBUG
- private var remindTimeInterval: TimeInterval = 1.5
- #else
- private var remindTimeInterval: TimeInterval = 3.0
- #endif
- private var isStop: Bool = false
- var showingAdViewController: Bool {
- return presentedViewController != nil
- }
- override func viewDidLoad() {
- super.viewDidLoad()
- setupLaunchScreenView()
- startTimer()
- addNotifiy()
- }
- func addNotifiy() {
- TSNetworkShared.startListenNetStatus { status, manager in
- switch status {
- case .reachable:
- kPurchaseToolShared.luanchuPrchase()
- // AppDelegate.requestAdTrack()
- manager?.stopListening()
- // self.initAdMob()
- break
- default:
- // AppDelegate.requestAdTrack()
- kPurchaseToolShared.luanchuPrchase()
- // self.initAdMob()
- break
- }
- }
- }
- func initAdMob() {
- // GADMobileAds.sharedInstance().start { status in
- // print("启动状态 == status === \(status.adapterStatusesByClassName)")
- // }
- }
- func enterApp() {
-
- showEveryDayPopPurchase()
-
- // DispatchQueue.main.async {
- // self.dismissHandler?()
- // }
- }
-
- private func startTimer() {
- if timer == nil {
- timer = DispatchSource.makeTimerSource(queue: DispatchQueue.global())
- timer?.schedule(deadline: .now(), repeating: .milliseconds(200))
- timer?.setEventHandler(handler: { [weak self] in
- // App活跃时,计时有效;如网络授权弹窗唤起时,计时失效
- DispatchQueue.main.async {
- guard let self = self,
- UIApplication.shared.applicationState == .active,
- !self.showingAdViewController else {
- return
- }
- self.remindTimeInterval -= 0.2
- print("倒计时:\(self.remindTimeInterval)")
- if self.remindTimeInterval <= 0 {
- self.timer?.cancel()
- self.enterApp()
- }
- }
- })
- timer?.resume()
- }
- }
-
-
- private func setupLaunchScreenView() {
- // 获取 LaunchScreen.storyboard 的视图控制器
- let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
- guard let launchVC = storyboard.instantiateInitialViewController() else {
- debugPrint("无法加载 LaunchScreen 的初始视图控制器")
- return
- }
- // 获取 LaunchScreen 的视图
- guard let launchView = launchVC.view else {
- debugPrint("无法获取 LaunchScreen 的视图")
- return
- }
- // 设置 launchView 的 frame 为当前视图的 bounds
- launchView.frame = UIScreen.main.bounds
- // 将 launchView 添加到 TSLaunchVC 的视图中
- view.addSubview(launchView)
- }
- }
- extension TSLaunchVC {
-
- func showEveryDayPopPurchase() {
-
- if UserDefaults.standard.string(forKey: "isFirstInstallApp") == nil || kPurchaseToolShared.isVip {
- //启动页->引导图->会员购买
- dismissHandler?()
- return
- }
-
- //启动页->会员购买
- // 1. 获取当前日期
- let currentDate = Date()
- let dateFormatter = DateFormatter()
- dateFormatter.dateFormat = "yyyyMMdd"
- let currentDateString = dateFormatter.string(from: currentDate)
-
- // 2. 获取上次弹窗的日期
- let userDefaults = UserDefaults.standard
- let lastGreetingDateString = userDefaults.string(forKey: "kEveryDayPopPurchase")
-
- // 3. 检查是否需要显示弹窗 "20250319"
- if lastGreetingDateString != currentDateString {
-
- // 4. 弹窗付费引导
- let vc = TSPurchaseVC()
- vc.closePageBlock = { [weak self] in
- guard let self = self else { return }
- dismissHandler?()
- }
- self.navigationController?.pushViewController(vc, animated: true)
-
- // 5. 更新上次弹窗的日期
- userDefaults.set(currentDateString, forKey: "kEveryDayPopPurchase")
-
- // userDefaults.set(String(Int(currentDateString)!+1), forKey: "kEveryDayPopPurchase")测试用的
- }else{
- dismissHandler?()
- }
- }
- }
|