TSLaunchVC.swift 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. //
  2. // TSLaunchVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. import Alamofire
  8. import UIKit
  9. class TSLaunchVC: UIViewController {
  10. var dismissHandler: (() -> Void)?
  11. // 定时器
  12. private var timer: DispatchSourceTimer?
  13. // 闪屏页剩余显示时长
  14. #if DEBUG
  15. private var remindTimeInterval: TimeInterval = 2.0
  16. #else
  17. private var remindTimeInterval: TimeInterval = 2.0
  18. #endif
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21. setupLaunchScreenView()
  22. addNotifiy()
  23. // if AppDelegate.isFirstInstallApp() {//首次安装需要等待网络权限弹窗
  24. // startTimer()
  25. // }else if TSDBHistory.isMigrationUserDefaultsHistory{ //迁移UserDefaultsHistory数据到数据库
  26. // TSDBHistory.migrationUserDefaultsHistory {
  27. // self.enterApp()
  28. // }
  29. // }else {
  30. // self.enterApp()
  31. // }
  32. if AppDelegate.isFirstInstallApp() {//首次安装需要等待网络权限弹窗
  33. startTimer()
  34. }else if TSDBHistory.isMigrationUserDefaultsHistory{ //迁移UserDefaultsHistory数据到数据库
  35. TSDBHistory.migrationUserDefaultsHistory { [weak self] in
  36. guard let self = self else { return }
  37. remindTimeInterval = 1.0
  38. startTimer()
  39. }
  40. }else {
  41. remindTimeInterval = 1.0
  42. startTimer()
  43. }
  44. }
  45. func addNotifiy() {
  46. TSNetworkTool.shared.startListenNetStatus { status, manager in
  47. switch status {
  48. case .reachable:
  49. manager?.stopListening()
  50. break
  51. default:
  52. break
  53. }
  54. PurchaseManager.default.requestProducts()
  55. }
  56. }
  57. func enterApp() {
  58. dismissHandler?()
  59. // AppDelegate.showEveryDayPopPurchase { vc in
  60. // if let vc = vc {
  61. //// self.navigationController?.pushViewController(vc, animated: true)
  62. // self.present(vc, animated: true)
  63. // }else{
  64. // self.dismissHandler?()
  65. // }
  66. // }
  67. // DispatchQueue.main.async {
  68. // self.dismissHandler?()
  69. // }
  70. }
  71. private func startTimer() {
  72. if timer == nil {
  73. var maxTime:Int = 0 //200*10=2s 200 *10*3 =6s
  74. timer = DispatchSource.makeTimerSource(queue: DispatchQueue.global())
  75. timer?.schedule(deadline: .now(), repeating: .milliseconds(200))
  76. timer?.setEventHandler(handler: { [weak self] in
  77. // App活跃时,计时有效;如网络授权弹窗唤起时,计时失效
  78. DispatchQueue.main.async {
  79. guard let self = self else {
  80. return
  81. }
  82. guard UIApplication.shared.applicationState == .active
  83. else {
  84. dePrint("倒计时:!= active")
  85. maxTime += 1
  86. if maxTime > 30 {
  87. dePrint("超过最大倒计时进入 app")
  88. self.timer?.cancel()
  89. self.timer = nil
  90. self.enterApp()
  91. }
  92. return
  93. }
  94. self.remindTimeInterval -= 0.2
  95. dePrint("倒计时:\(self.remindTimeInterval)")
  96. if self.remindTimeInterval <= 0 {
  97. self.timer?.cancel()
  98. self.timer = nil
  99. self.enterApp()
  100. }
  101. }
  102. })
  103. timer?.resume()
  104. }else{
  105. self.enterApp()
  106. }
  107. }
  108. // private func setupLaunchScreenView() {
  109. // // 获取 LaunchScreen.storyboard 的视图控制器
  110. // let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
  111. // guard let launchVC = storyboard.instantiateInitialViewController() else {
  112. // debugPrint("无法加载 LaunchScreen 的初始视图控制器")
  113. // return
  114. // }
  115. //
  116. // // 获取 LaunchScreen 的视图
  117. // guard let launchView = launchVC.view else {
  118. // debugPrint("无法获取 LaunchScreen 的视图")
  119. // return
  120. // }
  121. //
  122. // // 设置 launchView 的 frame 为当前视图的 bounds
  123. // launchView.frame = UIScreen.main.bounds
  124. //
  125. // // 将 launchView 添加到 TSLaunchVC 的视图中
  126. // view.addSubview(launchView)
  127. // }
  128. private func setupLaunchScreenView() {
  129. let imageView = UIImageView(frame: UIScreen.main.bounds)
  130. imageView.contentMode = .scaleAspectFill
  131. imageView.image = UIImage(named: "launch2")
  132. view.addSubview(imageView)
  133. }
  134. }