如何在swift 2.2中检查3G,4G和wifi互联网连接

时间:2017-06-20 06:28:43

标签: ios swift2 4g

导入基金会 import SystemConfiguration

公共课程可达性{

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //...

    cell.tintColor = UIColor.orange

    let bgview = UIView()
    bgview.backgroundColor = UIColor.purple
    cell.multipleSelectionBackgroundView = bgview

    //...
}

}

我使用上面编写的代码检查我的应用程序的互联网连接,这只检查3G和W​​IFI连接。但我还需要检查4G连接。任何人都可以帮我找到解决方案。

2 个答案:

答案 0 :(得分:4)

以下是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")
                }
            }
        }
    }

答案 1 :(得分:0)

最新的可达性快速工作代码。

if let status = appReachablity?.currentReachabilityStatus {
            var message = ""
            if status == .notReachable {
                // .NotReachable
                message = "DOT##=> Not Reachable"
                print(message)

            }
            else if status == .reachableViaWiFi {
                // .ReachableViaWiFi
                message = "DOT##=> Reachable Via WiFi"
                print(message)
            }
            else if status == .reachableViaWWAN {
                // .ReachableViaWWAN
                let netInfo = CTTelephonyNetworkInfo()
                if let cRAT = netInfo.currentRadioAccessTechnology  {
                    switch cRAT {
                    case CTRadioAccessTechnologyGPRS,
                         CTRadioAccessTechnologyEdge,
                         CTRadioAccessTechnologyCDMA1x:
                        message = "DOT##=> Reachable Via 2G"
                        print(message)
                    case CTRadioAccessTechnologyWCDMA,
                         CTRadioAccessTechnologyHSDPA,
                         CTRadioAccessTechnologyHSUPA,
                         CTRadioAccessTechnologyCDMAEVDORev0,
                         CTRadioAccessTechnologyCDMAEVDORevA,
                         CTRadioAccessTechnologyCDMAEVDORevB,
                         CTRadioAccessTechnologyeHRPD:
                        message = "DOT##=> Reachable Via 3G"
                        print(message)
                    case CTRadioAccessTechnologyLTE:
                        message = "DOT##=> Reachable Via 4G"
                        print(message)
                    default:
                        fatalError("error")
                    }
                }
            }
            Toast(text: message, duration: Delay.long).show()
        }