240 lines
8.2 KiB
Swift
240 lines
8.2 KiB
Swift
//
|
||
// AppDelegate.swift
|
||
// anniversary_Project
|
||
//
|
||
// Created by 忆海16 on 2024/4/11.
|
||
//
|
||
|
||
import UIKit
|
||
import IQKeyboardManagerSwift
|
||
import Photos
|
||
import SVProgressHUD
|
||
import AppLovinSDK
|
||
import FirebaseCore
|
||
import FirebaseAnalytics
|
||
import Alamofire
|
||
|
||
@main
|
||
class AppDelegate: UIResponder, UIApplicationDelegate,UNUserNotificationCenterDelegate {
|
||
|
||
var window: UIWindow?
|
||
let hasLaunchedBeforeKey = "hasLaunchedBefore"
|
||
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
|
||
FirebaseApp.configure()
|
||
IQKeyboardManager.shared.enable = true
|
||
self.window?.frame = UIScreen.main.bounds
|
||
UNUserNotificationCenter.current().delegate = self
|
||
// let vc = AV_RootTabbarVC()
|
||
// self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||
|
||
let userDefaults = UserDefaults.standard
|
||
let initConfig = ALSdkInitializationConfiguration(sdkKey: "NLQHJDx4rcfd5IqhZf9nad2tIqFSH8SSKP3DXD18sTKUvV6tBfrH9_RPCGb6hvEn3NPXJDmUQCnvnKgHIT7Qn4") { builder in
|
||
builder.mediationProvider = ALMediationProviderMAX
|
||
}
|
||
|
||
if userDefaults.bool(forKey: hasLaunchedBeforeKey) {
|
||
// let vc = AV_LaunchLimitesVC()
|
||
if userDefaults.bool(forKey: "iswindows"){
|
||
// 不是第一次启动
|
||
let vc = AV_RootPlayerVC()
|
||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||
// Start loading ads
|
||
|
||
}
|
||
}else{
|
||
// 不是第一次启动
|
||
let vc = AV_LaunchLimitesVC()
|
||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||
// Start loading ads
|
||
vc.createInterstitialAd()
|
||
|
||
}
|
||
}
|
||
|
||
|
||
// self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||
} else {
|
||
// 第一次启动
|
||
let vc = AV_SelectGenderVC()
|
||
self.window?.rootViewController = AV_NAVVC(rootViewController: vc)
|
||
userDefaults.set(true, forKey: hasLaunchedBeforeKey)
|
||
|
||
setdispatch()
|
||
stePermissions()
|
||
let currentDate = Date()
|
||
// 使用 UserDefaults 存储日期
|
||
let defaults = UserDefaults.standard
|
||
defaults.set(currentDate, forKey: "savedDate")
|
||
|
||
ALSdk.shared().initialize(with: initConfig) { sdkConfig in
|
||
|
||
|
||
}
|
||
|
||
}
|
||
|
||
self.window?.makeKeyAndVisible()
|
||
|
||
// 强制设置浅色模式
|
||
if #available(iOS 13.0, *) {
|
||
window?.overrideUserInterfaceStyle = .light
|
||
|
||
}
|
||
|
||
return true
|
||
}
|
||
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
|
||
completionHandler([.alert, .sound, .badge])
|
||
}
|
||
|
||
func stePermissions(){
|
||
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
|
||
if granted {
|
||
print("Permission granted")
|
||
} else if let error = error {
|
||
print("Permission denied: \(error.localizedDescription)")
|
||
}
|
||
}
|
||
requestPhotoLibraryPermission()
|
||
setNetwork()
|
||
// 使用示例
|
||
let healthManager = HealthManager()
|
||
|
||
// 请求授权
|
||
healthManager.requestAuthorization { (success, error) in
|
||
if success {
|
||
print("HealthKit authorization granted")
|
||
|
||
} else if let error = error {
|
||
print("HealthKit authorization failed with error: \(error.localizedDescription)")
|
||
}
|
||
}
|
||
}
|
||
|
||
func requestPhotoLibraryPermission() {
|
||
// 检查相册权限状态
|
||
let status = PHPhotoLibrary.authorizationStatus()
|
||
|
||
// 根据权限状态进行处理
|
||
switch status {
|
||
case .authorized:
|
||
// 用户已授权访问相册
|
||
print("相册权限已授权")
|
||
case .denied, .restricted:
|
||
// 用户已拒绝访问相册或权限受限
|
||
print("相册权限已拒绝或受限,请在设置中开启权限")
|
||
case .notDetermined:
|
||
// 用户尚未作出选择,请求相册权限
|
||
PHPhotoLibrary.requestAuthorization { [weak self] (newStatus) in
|
||
DispatchQueue.main.async {
|
||
if newStatus == .authorized {
|
||
// 用户授权访问相册
|
||
print("用户已授权访问相册")
|
||
} else {
|
||
// 用户未授权访问相册
|
||
print("用户未授权访问相册")
|
||
}
|
||
}
|
||
}
|
||
@unknown default:
|
||
// 处理未知权限状态
|
||
print("未知的相册权限状态")
|
||
}
|
||
}
|
||
|
||
func setNetwork(){
|
||
// 创建一个URL对象
|
||
if let url = URL(string: "https://www.baidu.com/") {
|
||
// 创建一个URLSession对象
|
||
let session = URLSession.shared
|
||
|
||
// 创建一个网络请求任务
|
||
let task = session.dataTask(with: url) { (data, response, error) in
|
||
if let error = error {
|
||
print("网络请求出错:\(error)")
|
||
|
||
}
|
||
}
|
||
|
||
// 开始网络请求任务
|
||
task.resume()
|
||
} else {
|
||
print("URL无效")
|
||
}
|
||
}
|
||
}
|
||
|
||
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.")
|
||
}
|
||
}
|