加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift 监听网络变化

发布时间:2020-12-14 06:40:17 所属栏目:百科 来源:网络整理
导读:第一步,需要引入Reachability.swift文件 网上自行百度 在AppDelegate中使用 //判断当前网络是否可用 func appDelegateCheckNetWork(){ do { reachability = try Reachability.reachabilityForInternetConnection() } catch { print("appDelegate:Unable to
第一步,需要引入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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读