swift 监听网络变化

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/wei_chong_chong/article/details/52856212

第一步,需要引入Reachability.swift文件 网上自行百度
在AppDelegate中使用
//判断当前网络是否可用
    func appDelegateCheckNetWork(){
        
        
        do {
            reachability = try Reachability.reachabilityForInternetConnection()
        } catch {
            print("appDelegate:Unable to create Reachability")
            return
        }
        if reachability.isReachable() {
            print("appDelegate:网络连接:可用")
            netWorkIsAvailable = true
        } else {
            print("appDelegate:网络连接:不可用")
            netWorkIsAvailable = false
        }
        
        // 检测网络类型
        if reachability.isReachableViaWiFi() {
            print("appDelegate:网络类型:Wifi")
        } else if reachability.isReachableViaWWAN() {
            print("appDelegate:网络类型:移动网络")
        } else {
            print("appDelegate:网络类型:无网络连接")
        }
           }
    
    //开启网络监听
    func monitorNetWork(){
        
       reachability = try Reachability.reachabilityForInternetConnection()
        
        reachability.whenReachable = { reachability in
        
        self.netWorkIsAvailable = true
        // 判断网络状态及类型
        print("网络可用")
        }
        
        // 网络不可用时执行
        reachability.whenUnreachable = { reachability in
        self.netWorkIsAvailable = false
        // 判断网络状态及类型
        print("网络不可用")
        }
        
        do {
        // 开始监听
        try reachability.startNotifier()
        } catch {
        print("AppDelegate:Unable to start notifier")
        }
        
    
    }
    
   


方法二:viewController中调用

  /************************* 网络状态监听部分(开始) *************************/
     
     /**
     通过消息自动监听网络改变
     添加消息监听
     */
    
    func NetworkStatusListener() {
        // 1、设置网络状态消息监听
        NSNotificationCenter.defaultCenter().addObserver(self, selector:"networkStatusChange", name: ReachabilityChangedNotification, object: nil);
        
        // 2、获得网络Reachability对象
        // Reachability必须一直存在,所以需要设置为全局变量
        conn = Reachability.reachabilityForInternetConnection()!;
        // 3、开启网络状态消息监听
        conn!.startNotifier();
    }
    
    func networkStatusChange() {
        checkNetworkStatus();
    }
    
    /**
     移除消息通知
     */
    deinit {
        // 关闭网络状态消息监听
        conn!.stopNotifier();
        // 移除网络状态消息通知
        NSNotificationCenter.defaultCenter().removeObserver(self);
    }
    
    /**
     主动检测网络状态
     */
    func checkNetworkStatus() {
        let reachability = Reachability.reachabilityForInternetConnection() // 准备获取网络连接信息
        
        if reachability!.isReachable() { // 判断网络连接状态
            print("网络连接:可用")
            if reachability!.isReachableViaWiFi() { // 判断网络连接类型
                print("连接类型:WiFi")
            } else if reachability!.isReachableViaWWAN() {
                print("连接类型:移动网络")
            }
        }else{
            print("网络连接:不可用")
            print("连接类型:没有网络连接")
        }
    }
    /********************* 网络状态监听部分(结束) *************************/
</pre><p></p><pre name="code" class="html">

监听网络变化参考:

http://blog.csdn.net/json_vip/article/details/51754881

http://blog.csdn.net/zhang5690800/article/details/51995716

阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页