swift之判断网络状态Alamofire、Reachability

网络状态Alamofire、Reachability都可以实现

==============//Alamofire监控网络

   //Alamofire监控网络,只能调用一次监听一次
func AlamofiremonitorNet() {
 let manager = NetworkReachabilityManager(host: "www.apple.com")
    manager?.listener = { status in
        print("网络状态: \(status)")
        if status == .reachable(.ethernetOrWiFi) { //WIFI
            print("wifi")
        } else if status == .reachable(.wwan) { // 蜂窝网络
            print("4G")
        } else if status == .notReachable { // 无网络
            print("无网络")
        } else { // 其他
            
        }
        
    }
    manager?.startListening()//开始监听网络
   }
  

 

 

2.********Reachability实时监听网络变化*****

 

https://github.com/tonymillion/Reachability和Reachability.swift不是同一个

这里需要在桥接文件中加入#import "Reachability.h"

//2.实时监听网络状态
         let reach  = Reachability.forInternetConnection()
        reach?.reachableBlock = { reachabilty in
            print("有网络\(String(describing: reachabilty))")
            if (reachabilty?.isReachableViaWiFi())!{
                            print("wifi")
                }else if (reachabilty?.isReachableViaWWAN())!{
                            print("4G")
                }else {
                            print("无网络")
                    }
        }

        reach?.unreachableBlock = {
     reachabilty in
             print("无网络\(String(describing: reachabilty))")
            
        }
        
        reach?.startNotifier()

3.********reachability直接检测一次网络*****

   let reach  = Reachability.forInternetConnection()
        
        if (reach?.isReachableViaWiFi())!{
            print("wifi")
        }else if (reach?.isReachableViaWWAN())!{
            print("4G")
        }else {
            print("无网络")
        }

4.********采用通知的方式监测网络状态*********

 //通知监听网络---这个好像没起作用
    func notificationMonitorNetwork(){
       
    // let reach  =  Reachability.init(hostName: "www.baidu.com")
        let reach = Reachability.forInternetConnection()
        NotificationCenter.default.addObserver(self, selector: #selector(rechChange), name: Notification.Name.reachabilityChanged, object: nil)
        reach?.startNotifier()
    }
  @objc  func rechChange(note: NSNotification) {
    print("检测网络")
       let reach = note.object as! Reachability // 准备获取网络连接信息
    if reach.isReachableViaWiFi() || reach.isReachableViaWWAN() {
            print("有网络")
        } else {
            print("没有网络")
        }
  
    }

 

================Reachability.swift监控网络,目前好像ios12不能用

下载地址https://github.com/ashleymills/Reachability.swift

 

 

你可能感兴趣的:(iOS,/swift)