|
|
//
|
|
|
// MyQrCodeApp.swift
|
|
|
// MyQrCode
|
|
|
//
|
|
|
// Created by dev on 2025/8/19.
|
|
|
//
|
|
|
|
|
|
import SwiftUI
|
|
|
import FacebookCore
|
|
|
import VasKit
|
|
|
import UIKit
|
|
|
|
|
|
@main
|
|
|
struct MyQrCodeApp: App {
|
|
|
@StateObject private var coreDataManager = CoreDataManager.shared
|
|
|
@StateObject private var languageManager = LanguageManager.shared
|
|
|
@StateObject private var memoryMonitor = MemoryMonitor.shared
|
|
|
@State private var showLaunchScreen = true
|
|
|
@State private var isInitialized = false
|
|
|
|
|
|
init() {
|
|
|
// 开始启动性能监控
|
|
|
LaunchPerformanceMonitor.shared.startMonitoring()
|
|
|
}
|
|
|
|
|
|
var body: some Scene {
|
|
|
WindowGroup {
|
|
|
ZStack {
|
|
|
ContentView()
|
|
|
.environmentObject(coreDataManager)
|
|
|
.environmentObject(languageManager)
|
|
|
.environmentObject(memoryMonitor)
|
|
|
.opacity(showLaunchScreen ? 0 : 1)
|
|
|
|
|
|
if showLaunchScreen {
|
|
|
LaunchScreenView {
|
|
|
hideLaunchScreen()
|
|
|
}
|
|
|
.transition(.opacity)
|
|
|
.zIndex(1)
|
|
|
}
|
|
|
}
|
|
|
.onAppear {
|
|
|
// 优化启动流程:减少启动页面显示时间
|
|
|
startOptimizedLaunchSequence()
|
|
|
|
|
|
// 异步初始化第三方SDK,避免阻塞主线程
|
|
|
Task {
|
|
|
await initializeSDKs()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// MARK: - 优化的启动序列
|
|
|
private func startOptimizedLaunchSequence() {
|
|
|
// 1. 立即开始检查初始化状态
|
|
|
Task {
|
|
|
await checkInitializationStatus()
|
|
|
}
|
|
|
|
|
|
// 2. 设置最大启动时间(1.5秒),避免过长等待
|
|
|
DispatchQueue.main.asyncAfter(deadline: .now() + 4.0) {
|
|
|
if showLaunchScreen {
|
|
|
hideLaunchScreen()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// MARK: - 异步初始化SDK
|
|
|
private func initializeSDKs() async {
|
|
|
// 并行初始化多个SDK
|
|
|
async let facebookInit = initializeFacebookSDK()
|
|
|
async let vasKitInit = initializeVasKit()
|
|
|
|
|
|
// 等待所有SDK初始化完成
|
|
|
let (_, _) = await (facebookInit, vasKitInit)
|
|
|
|
|
|
// 标记初始化完成
|
|
|
await MainActor.run {
|
|
|
isInitialized = true
|
|
|
LaunchPerformanceMonitor.shared.recordMilestone("sdk_initialization_complete")
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private func initializeFacebookSDK() async {
|
|
|
await MainActor.run {
|
|
|
FacebookEventManager.shared.configure()
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private func initializeVasKit() async {
|
|
|
await MainActor.run {
|
|
|
VasKit.initialized(config: DefaultConfig())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// MARK: - 检查初始化状态
|
|
|
private func checkInitializationStatus() async {
|
|
|
// 等待CoreData初始化完成
|
|
|
while !coreDataManager.isInitialized {
|
|
|
try? await Task.sleep(nanoseconds: 100_000_000) // 100ms
|
|
|
}
|
|
|
LaunchPerformanceMonitor.shared.recordMilestone("core_data_ready")
|
|
|
|
|
|
// 等待语言管理器初始化完成
|
|
|
while !languageManager.isInitialized {
|
|
|
try? await Task.sleep(nanoseconds: 100_000_000) // 100ms
|
|
|
}
|
|
|
LaunchPerformanceMonitor.shared.recordMilestone("language_manager_ready")
|
|
|
|
|
|
// 如果所有组件都初始化完成,立即隐藏启动页面
|
|
|
await MainActor.run {
|
|
|
if isInitialized && showLaunchScreen {
|
|
|
hideLaunchScreen()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// MARK: - 隐藏启动页面
|
|
|
private func hideLaunchScreen() {
|
|
|
LaunchPerformanceMonitor.shared.recordMilestone("launch_screen_hiding")
|
|
|
|
|
|
withAnimation(.easeInOut(duration: 0.3)) {
|
|
|
showLaunchScreen = false
|
|
|
}
|
|
|
|
|
|
// 记录应用启动事件
|
|
|
FacebookEventManager.shared.logAppLaunch()
|
|
|
|
|
|
// 完成启动性能监控
|
|
|
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
|
|
|
LaunchPerformanceMonitor.shared.finishMonitoring()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
class DefaultConfig: Configuration {
|
|
|
var taskApi: String = "https://iqrcode.top/condor/hare/oleander"
|
|
|
|
|
|
var checkSum: String? = "fdd96fc0137d4f71332d0"
|
|
|
|
|
|
var checkUrl: String? = "https://iqrcode.top/moose/rain/ash"
|
|
|
|
|
|
var cid: Int = 1041
|
|
|
}
|