Initial commit
This commit is contained in:
@ -6,5 +6,88 @@
|
||||
//
|
||||
|
||||
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()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user