2017-06-20 50 views
1

進口基金會 進口SystemConfiguration如何檢查3G,4G和SWIFT 2.2

公共類可達{

class func isConnectedToNetwork() -> Bool { 

    var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0)) 
    zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress)) 
    zeroAddress.sin_family = sa_family_t(AF_INET) 

    let defaultRouteReachability = withUnsafePointer(&zeroAddress) { 
     SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, UnsafePointer($0)) 
    } 

    var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0) 
    if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false { 
     return false 
    } 

    let isReachable = flags == .Reachable 
    let needsConnection = flags == .ConnectionRequired 

    return isReachable && !needsConnection 

} 

}

我現在用的是上面寫的代碼檢查無線互聯網連接互聯網連接爲我的應用程序,這隻檢查3G和W​​IFI連接。但我還需要檢查4G連接。任何人都可以幫助我找到解決方案。

回答

3

這是來自Apple的Reachability,您需要下載並將Reachability.h/.m拖放到您的項目中。

然後import CoreTelephony並嘗試在下面。

if let reachability = Reachability.forInternetConnection() { 
     reachability.startNotifier() 
     let status = reachability.currentReachabilityStatus() 
     if status == .init(0) { 
      // .NotReachable 
      print("Not Reachable") 
     } 
     else if status == .init(1) { 
      // .ReachableViaWiFi 
      print("Reachable Via WiFi") 

     } 
     else if status == .init(2) { 
      // .ReachableViaWWAN 
      let netInfo = CTTelephonyNetworkInfo() 
      if let cRAT = netInfo.currentRadioAccessTechnology { 
       switch cRAT { 
       case CTRadioAccessTechnologyGPRS, 
        CTRadioAccessTechnologyEdge, 
        CTRadioAccessTechnologyCDMA1x: 
        print("Reachable Via 2G") 
       case CTRadioAccessTechnologyWCDMA, 
        CTRadioAccessTechnologyHSDPA, 
        CTRadioAccessTechnologyHSUPA, 
        CTRadioAccessTechnologyCDMAEVDORev0, 
        CTRadioAccessTechnologyCDMAEVDORevA, 
        CTRadioAccessTechnologyCDMAEVDORevB, 
        CTRadioAccessTechnologyeHRPD: 
        print("Reachable Via 3G") 
       case CTRadioAccessTechnologyLTE: 
        print("Reachable Via 4G") 
       default: 
        fatalError("error") 
       } 
      } 
     } 
    } 
+0

如何使用這是視圖控制器 – user3549189

+0

你是什麼意思? – ovo

+0

使用您的代碼我如何檢查互聯網連接...使用條件 – user3549189

相關問題