94 lines
3.1 KiB
Swift
94 lines
3.1 KiB
Swift
//
|
|
// InitAPP.swift
|
|
// AIGrammar
|
|
//
|
|
// Created by oscar on 2024/6/26.
|
|
//
|
|
|
|
import Foundation
|
|
import Alamofire
|
|
import TrustDecision
|
|
import SwiftJWT
|
|
import SwiftyBeaver
|
|
|
|
class InitApp {
|
|
static let shared = InitApp(environment: globalEnvironment)
|
|
|
|
private let userDefaults = UserDefaults.standard
|
|
private let deviceIDKey = "DeviceID"
|
|
private let vipStatusKey = "VIPStatus"
|
|
private var deviceID: String = ""
|
|
private var vipStatus: Bool = false
|
|
|
|
var environment: GlobalEnvironment
|
|
|
|
init(environment: GlobalEnvironment) {
|
|
self.environment = environment
|
|
initializeApp()
|
|
}
|
|
|
|
private func initializeApp() {
|
|
fetchDeviceID()
|
|
}
|
|
|
|
private func fetchDeviceID() {
|
|
if let savedDeviceID = userDefaults.string(forKey: deviceIDKey) {
|
|
self.environment.deviceID = savedDeviceID
|
|
logger.info("DeviceID from UserDefaults: \(savedDeviceID)")
|
|
// 获取用户状态
|
|
getUser()
|
|
} else {
|
|
getDeviceIDFromTrustDecision()
|
|
}
|
|
}
|
|
|
|
private func getDeviceIDFromTrustDecision() {
|
|
var options = [String : NSObject]()
|
|
let responseCallback: ([String : Any]) -> Void = { response in
|
|
DispatchQueue.main.async { // 确保在主线程更新UI
|
|
if let deviceId = response["device_id"] as? String {
|
|
self.deviceID = deviceId
|
|
self.userDefaults.set(deviceId, forKey: self.deviceIDKey)
|
|
self.environment.deviceID = deviceId
|
|
logger.info("Device ID from TrustDecision: \(self.deviceID)")
|
|
|
|
// 获取VIP状态
|
|
self.getUser()
|
|
}
|
|
}
|
|
}
|
|
options["callback"] = unsafeBitCast(responseCallback as @convention(block) ([String : Any]) -> Void, to: AnyObject.self) as? NSObject
|
|
let manager = TDMobRiskManager.sharedManager()
|
|
manager?.pointee.initWithOptions(options)
|
|
}
|
|
|
|
|
|
private func getUser() {
|
|
NetworkManager.shared.getUserProfile() { result in
|
|
DispatchQueue.main.async {
|
|
switch result {
|
|
case .success(let userData):
|
|
self.vipStatus = userData.vip == 1
|
|
self.environment.GID = userData.id
|
|
self.environment.userID = userData.userid
|
|
self.environment.userName = userData.username
|
|
self.environment.isVip = userData.vip == 1
|
|
logger.info("getUserProfile: ID: \(userData.id), userID: \(userData.userid), userName: \(userData.username), vip: \(userData.vip)")
|
|
case .failure(let error):
|
|
switch error {
|
|
case .businessError(let ret, let message):
|
|
logger.error("Business error - Ret: \(ret), Message: \(message)")
|
|
case .other(let error):
|
|
logger.error("network occurred: \(error.localizedDescription)")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
func refreshUserInfo(){
|
|
getUser()
|
|
}
|
|
|
|
}
|