import UIKit
import MaterialMonitorSDK
import AppTrackingTransparency

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
          
        // MARK: - 根控制器（TabBar 切换两个 Demo）
        window = UIWindow(frame: UIScreen.main.bounds)
         
        let atVC = ViewController()
        window?.rootViewController = atVC
        
//        let scVC = ScrollViewController()
//        window?.rootViewController = scVC
         
        window?.makeKeyAndVisible()

        return true
    }
    
    func applicationDidBecomeActive(_ application: UIApplication) {
        if #available(iOS 14, *) {
            ATTrackingManager.requestTrackingAuthorization { status in
                self.init_MaterialMonitor()
            }
        } else {
            // Fallback on earlier versions
            
            init_MaterialMonitor()
            
        }
    }
    
    /// 初始化素材监测功能，建议是在获取idfa授权后
    func init_MaterialMonitor() {
        
        let appId = "a5b0e8491845b3"
        let appKey = "7eae0567827cfe2b22874061763f30c9"
        let idfa = "idfa"
         
 
        let sdkVersion = "sdk_version"
        
        // MARK: - MaterialMonitor SDK 初始化
        let config = MaterialMonitorConfig.Builder()
            // ── 上传服务地址（留空则使用 SDK 内置默认地址）──────────────────
            .baseUploadUrl("https://cag.flowpf.com/")
            // ── 鉴权 ────────────────────────────────────────────────────────
            .appId(appId)
            .appKey(appKey)
            // ── 设备标识符 ───────────────────────────────────────────────────
            .idfa(idfa)                 // ATT 授权后传入 ATTrackingManager.advertisingIdentifier.uuidString
            .idfv(nil)                  // nil 时 SDK 自动从 UIDevice.current.identifierForVendor 读取
            .sdkVersion(sdkVersion)     // 宿主 TopOn SDK 版本号，写入 meta device_info.sdk_version
            // ── 网络超时（ms） ──────────────────────────────────────────────
            .connectTimeoutMs(15_000)   // TCP 连接超时，默认 15 s
            .readTimeoutMs(30_000)      // 服务端响应超时，默认 30 s
            // ── 重试策略 ─────────────────────────────────────────────────────
            .maxUploadAttempts(3)       // 首次 + 最多 2 次重试
            .retryDelayMs([5_000, 15_000]) 
            // ── 调试（生产环境请保持 false）──────────────────────────────────
            .debugPerfLogging(true)
            .build()
        
        MaterialMonitor.initialize(config: config)
        
    }
    
}
