AppDelegate

importUIKit

importSVProgressHUD

importAlamofire

importIQKeyboardManagerSwift

importMJRefresh

@main

class AppDelegate: UIResponder, UIApplicationDelegate {

    varwindow:UIWindow?

    //首次安装App,会弹出是否允许访问网络的弹框。弹框时候是无网络的。等用户点了确认要监听网络恢复

    private var reachabilityManager = Alamofire.NetworkReachabilityManager()

    //上一次的网络状态

    private var lastReachabilityState: NetworkReachabilityManager.NetworkReachabilityStatus = NetworkReachabilityManager.NetworkReachabilityStatus.notReachable

    funcapplication(_application:UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey:Any]?) ->Bool{

        // Override point for customization after application launch.

        window=UIWindow.init()

        lettabbar =TabBarController.init()

        window?.rootViewController= tabbar

        window?.backgroundColor = .white

        window?.makeKeyAndVisible()

        SVProgressHUD.setMinimumDismissTimeInterval(2)

        SVProgressHUD.setMaximumDismissTimeInterval(4)

        SVProgressHUD.setDefaultStyle(.custom)

        SVProgressHUD.setDefaultAnimationType(.native)

        // 键盘不遮挡文本框

        let manager = IQKeyboardManager.shared;

        manager.enable=true;

        manager.shouldResignOnTouchOutside = true;

        manager.shouldToolbarUsesTextFieldTintColor = true;

        manager.enableAutoToolbar=false;

        manager.keyboardDistanceFromTextField = 0;

        startNetworkListening()

        return true

    }

    //首次安装App,会弹出是否允许访问网络的弹框。用户点击确认后,进入这里,重新请求数据

    private func startNetworkListening() {

        guardletreachabilityManager =self.reachabilityManagerelse{return}

        ifreachabilityManager.isReachable{

            //本来就是可以连上网的,后面就不需要监听了

            return

        }

        reachabilityManager.listener= { [weakself] statusin

            guardlet`self` =selfelse{

                return

            }

            switchstatus {

            case.notReachable:

                break

            case.unknown:

                break

            case .reachable(.ethernetOrWiFi), .reachable(.wwan):

                if self.lastReachabilityState == .notReachable || self.lastReachabilityState == .unknown {

                    //之前是网络不可达

                    lettabbar =TabBarController.init()

                    self.window?.rootViewController= tabbar

                }

            }

            self.lastReachabilityState= status

        }

    }

}

你可能感兴趣的:(AppDelegate)