// // LaunchViewController.swift // SHECommunity // // Created by Lin on 2025/1/3. // import UIKit import RxSwift import SwiftyUserDefaults import RxCocoa class LaunchViewController: BaseViewController { private let showVersion = 1 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. view.backgroundColor = .white setupLayout() getUserConfig() } /// 获取用户配置 func getUserConfig() { SystemService.userConfig().subscribe(onNext: { response in guard let model = response.model else { return } MQTTService.shared.connect() Defaults[\.loginToken] = model.token RelationStore.shared.preload() if #available(iOS 16.0, *) { AppRestrictManager.shared.checkScreenTimePermissionAfterLogin() } AppContextManager.shared.systemConfig = model.config if let upgrade = AppContextManager.shared.systemConfig?.versionUpgradeModel { self.showVersionUpgrade(upgrade, model: model) return } self.continueAfterConfig(model: model) }, onError: { [weak self] (error) in DLAlert.show(title: error.localizedDescription, defaultTitle: "重试") { [weak self] in guard let this = self else { return } // #if DEBUG || AdHoc // this.showServerSwitchAlert() // #else this.getUserConfig() // #endif } }).disposed(by: disposeBag) } private func showServerSwitchAlert() { let current = URLManager.shared.apiServerURL let alert = UIAlertController( title: "切换接口", message: "当前:\(current)", preferredStyle: .alert ) alert.addTextField { field in field.placeholder = "自定义接口地址" field.text = current field.keyboardType = .URL field.autocorrectionType = .no field.autocapitalizationType = .none } for preset in URLManager.presetServers { alert.addAction(UIAlertAction(title: preset.title, style: .default) { [weak self] _ in self?.applyServer(url: preset.url, env: preset.env) }) } alert.addAction(UIAlertAction(title: "确定", style: .default) { [weak self] _ in let typed = alert.textFields?.first?.text ?? "" self?.applyServer(url: typed, env: nil) }) alert.addAction(UIAlertAction(title: "取消", style: .cancel)) present(alert, animated: true) } private func applyServer(url: String, env: Int?) { let normalized = URLManager.normalizedServerURL(url) guard !normalized.isEmpty else { DLToast.show(text: "请输入接口地址") return } URLManager.shared.switchServer(url: normalized, env: env) AppDelegate.shared.showMainViewController() } private func continueAfterConfig(model: UserConfigModel) { AppDelegate.shared.showMainViewController() } private func showVersionUpgrade(_ upgrade: VersionUpgradeModel, model: UserConfigModel) { showVersionUpgradePop(upgrade: upgrade) { [weak self] in self?.continueAfterConfig(model: model) } } // MARK: - Init init() { super.init(nibName: nil, bundle: nil) } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } lazy var launchLogoView: UIImageView = { let view = UIImageView() view.image = UIImage(named: "Launch/logo") view.backgroundColor = .clear view.contentMode = .scaleAspectFill return view }() lazy var tipsImgView: UIImageView = { let view = UIImageView() view.image = UIImage(named: "Launch/slogan") view.backgroundColor = .clear view.contentMode = .scaleAspectFill return view }() } extension LaunchViewController { private func setupLayout() { view.addSubview(launchLogoView) view.addSubview(tipsImgView) launchLogoView.layoutChain .centerX() .centerY() tipsImgView.layoutChain .centerX() .bottom(kSafeBottomMargin + 50) } }