代码之家  ›  专栏  ›  技术社区  ›  Evgeniy Kleban

尝试使用Alamofire检查iOS设备上的internet连接

  •  0
  • Evgeniy Kleban  · 技术社区  · 7 年前

    我使用以下代码检查internet连接:

    class Reachability {
    
        let networkReachabilityManager = Alamofire.NetworkReachabilityManager(host: "www.google.com")
    
        func checkForReachability() {
            self.networkReachabilityManager?.listener = { status in
                print("Network Status: \(status)")
                switch status {
                case .notReachable:
                    print("no internet connection detected")
                //Show error here (no internet connection)
                case .reachable(_), .unknown:
                    print("internet connection availible")
                }
            }
            self.networkReachabilityManager?.startListening()
        }
    }
    

    当连接存在时,它会成功调用block in。可访问。但如果没有连接,什么都不叫,为什么?

    我这样称呼它(保持对类的引用,所以它不会被发布)

    class AppDelegate: UIResponder, UIApplicationDelegate {
        var window: UIWindow?
        let reachabilityManager = Reachability()
    
        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            window = UIWindow(frame: UIScreen.main.bounds)
            reachabilityManager.checkForReachability()
            return true
        }
    
    2 回复  |  直到 7 年前
        1
  •  7
  •   pacification    7 年前

    创建用于检查连接性的公共类

    import Foundation
    import Alamofire
    
    class Connectivity {
        class func isConnectedToInternet() -> Bool {
            return NetworkReachabilityManager()!.isReachable
        }
    }
    

    并在需要的地方调用函数

    if !Connectivity.isConnectedToInternet() {
        // show Alert
        return
    }
    
        2
  •  2
  •   Rashed    7 年前

    创建一个名为 Connectivity 。您可以使用 NetworkReachabilityManager 分类自 Alamofire 并配置 isConnectedToInternet() 方法根据您的需要。我只检查设备是否连接到internet。

    import Foundation
    import Alamofire
    class Connectivity {
        class func isConnectedToInternet() ->Bool {
            return NetworkReachabilityManager()!.isReachable
        }
    }
    

    使用情况-

    if Connectivity.isConnectedToInternet() {
            print("Yes! internet is available.")
            // do some tasks..
     }
    

    或者你可以这么做-

      if let err = error as? URLError, err.code  == URLError.Code.notConnectedToInternet{
        // No internet connection
        }else{
        // your other errors
        }