223 lines
7.6 KiB
Swift
223 lines
7.6 KiB
Swift
//
|
||
// AppDelegate.swift
|
||
// wallpaper_project
|
||
|
||
|
||
import UIKit
|
||
import IQKeyboardManagerSwift
|
||
import AppLovinSDK
|
||
import FirebaseCore
|
||
import FirebaseAnalytics
|
||
import Alamofire
|
||
import FBSDKCoreKit
|
||
import MTGSDK
|
||
import AnyThinkSDK
|
||
|
||
@main
|
||
class AppDelegate: UIResponder, UIApplicationDelegate {
|
||
var overlayWindow: UIWindow?
|
||
var logTextView: UITextView?
|
||
|
||
|
||
var wasInBackground = false
|
||
static var shared: AppDelegate {
|
||
return UIApplication.shared.delegate as! AppDelegate
|
||
}
|
||
|
||
var isFirstLaunchq: Bool = true
|
||
var window: UIWindow?
|
||
var interstitialAd: MAInterstitialAd!
|
||
var retryAttempt = 0.0
|
||
var adCheckTimer: Timer?
|
||
var adCheckStartTime: Date?
|
||
|
||
let hasLaunchedBeforeKey = "hasLaunchedBefore"
|
||
|
||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||
|
||
FirebaseApp.configure()
|
||
ApplicationDelegate.shared.application(application, didFinishLaunchingWithOptions: launchOptions)
|
||
|
||
IQKeyboardManager.shared.enable = true
|
||
let splashViewController = WA_limitsVCViewController()
|
||
// 设置启动视图控制器为应用程序的根视图控制器
|
||
window = UIWindow(frame: UIScreen.main.bounds)
|
||
window?.rootViewController = splashViewController
|
||
self.window?.makeKeyAndVisible()
|
||
|
||
setdispatch()
|
||
|
||
initializationTopOn.toponeSDK()
|
||
|
||
let userDefaults = UserDefaults.standard
|
||
if userDefaults.bool(forKey: hasLaunchedBeforeKey){
|
||
let tt = UserDefaults.standard
|
||
print("-------\(tt.bool(forKey: "iswindows"))")
|
||
}else{
|
||
//第一次启动
|
||
UserDefaults.standard.set(true, forKey: hasLaunchedBeforeKey)
|
||
UserDefaults.standard.set(false, forKey: "iswindows")
|
||
}
|
||
|
||
Analytics.logEvent("goin_app", parameters: nil)
|
||
|
||
// 强制设置浅色模式
|
||
if #available(iOS 13.0, *) {
|
||
window?.overrideUserInterfaceStyle = .light
|
||
|
||
}
|
||
return true
|
||
}
|
||
|
||
|
||
func application(_ app: UIApplication,open url: URL,options:[UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
|
||
ApplicationDelegate.shared.application(
|
||
app,
|
||
open: url,
|
||
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
|
||
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
|
||
)
|
||
}
|
||
|
||
func applicationDidEnterBackground(_ application: UIApplication) {
|
||
|
||
}
|
||
|
||
func applicationWillEnterForeground(_ application: UIApplication) {
|
||
|
||
}
|
||
|
||
func applicationDidBecomeActive(_ application: UIApplication) {
|
||
|
||
}
|
||
|
||
|
||
|
||
func setdispatch(){
|
||
// 使用信号量控制并发任务
|
||
let dispatchGroup = DispatchGroup()
|
||
|
||
// 请求跟踪授权并处理 IDFA
|
||
dispatchGroup.enter()
|
||
DispatchQueue.global(qos: .background).async {
|
||
requestTrackingAuthorization { idfa in
|
||
DispatchQueue.main.async {
|
||
if let idfa = idfa {
|
||
print("IDFA: \(idfa)")
|
||
StartManager.shared.idfaid = idfa
|
||
print("Stored IDFA: \(StartManager.shared.idfaid ?? "N/A")")
|
||
} else {
|
||
print("IDFA is not available or tracking authorization denied.")
|
||
}
|
||
dispatchGroup.leave()
|
||
}
|
||
}
|
||
}
|
||
|
||
// 获取本地 IP 地址
|
||
dispatchGroup.enter()
|
||
DispatchQueue.global(qos: .background).async {
|
||
if let localIP = getLocalIPAddress() {
|
||
DispatchQueue.main.async {
|
||
print("Local IP Address: \(localIP)")
|
||
StartManager.shared.localIP = localIP
|
||
dispatchGroup.leave()
|
||
}
|
||
} else {
|
||
DispatchQueue.main.async {
|
||
print("Local IP Address not available")
|
||
dispatchGroup.leave()
|
||
}
|
||
}
|
||
}
|
||
|
||
// 获取远程 IP 地址
|
||
dispatchGroup.enter()
|
||
DispatchQueue.global(qos: .background).async {
|
||
getPublicIPAddress { publicIP in
|
||
DispatchQueue.main.async {
|
||
if let publicIP = publicIP {
|
||
print("Public IP Address: \(publicIP)")
|
||
StartManager.shared.publicIP = publicIP
|
||
print("Stored Public IP Address: \(StartManager.shared.publicIP ?? "N/A")")
|
||
} else {
|
||
print("Public IP Address not available")
|
||
}
|
||
dispatchGroup.leave()
|
||
}
|
||
}
|
||
}
|
||
|
||
// 获取设备 ID
|
||
dispatchGroup.enter()
|
||
DispatchQueue.global(qos: .background).async {
|
||
let deviceID = UIDevice.current.identifierForVendor?.uuidString
|
||
DispatchQueue.main.async {
|
||
StartManager.shared.devicID = deviceID
|
||
print("Device ID: \(StartManager.shared.devicID ?? "N/A")")
|
||
dispatchGroup.leave()
|
||
}
|
||
}
|
||
|
||
// 所有任务完成后的操作
|
||
dispatchGroup.notify(queue: .main) {
|
||
print("All tasks are completed.")
|
||
}
|
||
}
|
||
func showOverlayWindow() {
|
||
// 创建一个新的窗口,设置其大小和位置
|
||
let overlaySize = CGSize(width: 200, height: 300)
|
||
let overlayOrigin = CGPoint(x: UIScreen.main.bounds.width - overlaySize.width,
|
||
y: (UIScreen.main.bounds.height - overlaySize.height) - 200)
|
||
overlayWindow = UIWindow(frame: CGRect(origin: overlayOrigin, size: overlaySize))
|
||
|
||
// 设置窗口级别高于状态栏
|
||
overlayWindow?.windowLevel = UIWindow.Level.statusBar + 1
|
||
overlayWindow!.isUserInteractionEnabled = true
|
||
|
||
// 创建一个自定义视图
|
||
let overlayView = UIView(frame: overlayWindow!.bounds)
|
||
overlayView.isUserInteractionEnabled = true
|
||
overlayView.backgroundColor = UIColor.red.withAlphaComponent(0.5) // 半透明红色背景
|
||
overlayWindow?.addSubview(overlayView)
|
||
|
||
// let btn = UIButton(frame: overlayWindow!.bounds)
|
||
// btn.addTarget(self, action: #selector(showOverlayView), for: .touchUpInside)
|
||
|
||
// 创建并配置 TextView
|
||
logTextView = UITextView(frame: overlayView.bounds.insetBy(dx: 10, dy: 10))
|
||
logTextView?.backgroundColor = UIColor.clear
|
||
logTextView?.textColor = UIColor.white
|
||
logTextView?.isEditable = false
|
||
logTextView?.isScrollEnabled = true
|
||
overlayView.addSubview(logTextView!)
|
||
// overlayView.addSubview(btn)
|
||
// 设置根视图控制器
|
||
// overlayWindow?.rootViewController = UIViewController()
|
||
overlayWindow?.isHidden = false
|
||
}
|
||
|
||
func removeOverlayWindow() {
|
||
overlayWindow?.isHidden = true // 隐藏窗口
|
||
overlayWindow = nil // 释放窗口
|
||
}
|
||
|
||
|
||
func addLogMessage(_ message: String) {
|
||
if logTextView != nil {
|
||
let currentText = logTextView?.text ?? ""
|
||
let updatedText = "\(message)\n\n\(currentText)"
|
||
logTextView?.text = updatedText
|
||
|
||
// 滚动到文本的开头
|
||
let range = NSMakeRange(0, 0)
|
||
logTextView?.scrollRangeToVisible(range)
|
||
} else {
|
||
print("Log TextView is not initialized.")
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|