//
|
// SceneDelegate.swift
|
// DolphinEnglishLearnStudent
|
//
|
// Created by 无故事王国 on 2024/5/22.
|
//
|
|
import UIKit
|
import SVProgressHUD
|
|
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
|
|
var window: UIWindow?
|
var globalTimeval:Int?
|
var timer:Timer?
|
private var disposeBag = JQ_disposeBag
|
|
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
|
guard let windowScene = (scene as? UIWindowScene) else { return }
|
UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer")
|
window = UIWindow(windowScene: windowScene)
|
window?.frame = windowScene.coordinateSpace.bounds
|
if #available(iOS 13.0, *) {
|
window?.overrideUserInterfaceStyle = .light
|
}
|
|
if WXApi.isWXAppInstalled(){
|
WXApi.registerApp(WeChatAPPID, universalLink: "https://www.dollearn/app/")
|
}
|
|
SVProgressHUD.setMaximumDismissTimeInterval(1.5)
|
SVProgressHUD.setDefaultMaskType(.custom)
|
|
guard !LoginTokenModel.isOverdue() else {
|
needLogin();return
|
}
|
loginSuccess()
|
}
|
|
func sceneDidDisconnect(_ scene: UIScene) {
|
// Called as the scene is being released by the system.
|
// This occurs shortly after the scene enters the background, or when its session is discarded.
|
// Release any resources associated with this scene that can be re-created the next time the scene connects.
|
// The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
|
}
|
|
func sceneDidBecomeActive(_ scene: UIScene) {
|
// Called when the scene has moved from an inactive state to an active state.
|
// Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
|
}
|
|
func sceneWillResignActive(_ scene: UIScene) {
|
// Called when the scene will move from an active state to an inactive state.
|
// This may occur due to temporary interruptions (ex. an incoming phone call).
|
}
|
|
func sceneWillEnterForeground(_ scene: UIScene) {
|
// Called as the scene transitions from the background to the foreground.
|
// Use this method to undo the changes made on entering the background.
|
}
|
|
func sceneDidEnterBackground(_ scene: UIScene) {
|
// Called as the scene transitions from the foreground to the background.
|
// Use this method to save data, release shared resources, and store enough scene-specific state information
|
// to restore the scene back to its current state.
|
}
|
|
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
|
if URLContexts.first!.url.host == "resendContextReqByScheme"{
|
WXApi.handleOpen(URLContexts.first!.url, delegate: self)
|
}
|
|
}
|
|
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
|
WXApi.handleOpenUniversalLink(userActivity, delegate: self)
|
}
|
|
}
|
|
extension SceneDelegate:WXApiDelegate{
|
func onReq(_ req: BaseReq) {
|
|
}
|
|
func onResp(_ resp: BaseResp) {
|
|
}
|
}
|
|
extension SceneDelegate{
|
func loginSuccess(){
|
let tabBar = BaseTabBarVC()
|
let homeNav = BaseNav(rootViewController: HomeVC())
|
homeNav.tabBarItem = UITabBarItem(title: "首页", image: UIImage(named: "nav_home"), selectedImage: UIImage(named: "nav_home_s")!.withRenderingMode(.alwaysOriginal))
|
|
let marketNav = BaseNav(rootViewController: MarketVC())
|
marketNav.tabBarItem = UITabBarItem(title: "商城", image: UIImage(named: "nav_market"), selectedImage: UIImage(named: "nav_market_s")!.withRenderingMode(.alwaysOriginal))
|
|
let meNav = BaseNav(rootViewController: MeVC())
|
meNav.tabBarItem = UITabBarItem(title: "我的", image: UIImage(named: "nav_me"), selectedImage: UIImage(named: "nav_me_s")!.withRenderingMode(.alwaysOriginal))
|
|
|
tabBar.viewControllers = [homeNav,marketNav,meNav]
|
sceneDelegate?.window?.rootViewController = tabBar
|
sceneDelegate?.window?.makeKeyAndVisible()
|
}
|
|
func needLogin(){
|
sceneDelegate?.window?.rootViewController = BaseNav(rootViewController: LoginVC())
|
sceneDelegate?.window?.makeKeyAndVisible()
|
LoginTokenModel.clearToken()
|
|
}
|
|
func startTimer(){
|
print("答题:开始计时-开始")
|
guard let timeval = globalTimeval else {return}
|
|
timer = Timer.scheduledTimer(withTimeInterval: 5.0, repeats: true) {[weak self] timer in
|
guard let weakSelf = self else { return }
|
if let v = UserDefaults.standard.object(forKey: "scheduledTimer") as? TimeInterval{
|
if Date().timeIntervalSince1970 - v > Double(timeval) * 60.0{
|
Services.giveIntegral().subscribe(onNext: { _ in
|
print("答题:开始计时-调用")
|
UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer")
|
UserDefaults.standard.synchronize()
|
}).disposed(by: weakSelf.disposeBag)
|
}
|
}else{
|
print("答题:开始计时-调用(计时)")
|
UserDefaults.standard.set(Date().timeIntervalSince1970, forKey: "scheduledTimer")
|
UserDefaults.standard.synchronize()
|
}
|
}
|
timer?.fire()
|
RunLoop.current.add(timer!, forMode: .common)
|
}
|
|
func suspendTimer(){
|
print("答题:开始计时-调用(停止)")
|
timer?.fireDate = .distantFuture
|
timer = nil
|
UserDefaults.standard.set(nil, forKey: "scheduledTimer")
|
UserDefaults.standard.synchronize()
|
}
|
}
|