1

Is there a way to determine the type of WWAN connection (3G/Edge etc.) in iOS? I'm familiar with Apple's Reachability class, but it can just differ between Wifi/WWAN ...

Thanks a lot for helping!

animal_chin
  • 6,610
  • 9
  • 37
  • 41
  • possible duplicate of [Checking cellular network type in iOS](http://stackoverflow.com/questions/9561253/checking-cellular-network-type-in-ios) – CodaFi Apr 18 '12 at 23:02

3 Answers3

3

in iOS 7.0+ we have CoreTelephony framework which can provide us the required details about network type.

Here is a sample.

CTTelephonyNetworkInfo *telephonyInfo = [[CTTelephonyNetworkInfo alloc] init];
        NSString *currentRadio = telephonyInfo.currentRadioAccessTechnology;
        if ([currentRadio isEqualToString:CTRadioAccessTechnologyLTE]) {
            // LTE

        } else if([currentRadio isEqualToString:CTRadioAccessTechnologyEdge]) {
            // EDGE

        } else if([currentRadio isEqualToString:CTRadioAccessTechnologyWCDMA]){
            // 3G

        }
Noundla Sandeep
  • 3,334
  • 5
  • 29
  • 56
2

An answer here Checking cellular network type in iOS may help you. It says that you can try to determine your mobile network type from their IP address ranges.

Community
  • 1
  • 1
zhuo
  • 21
  • 3
0

Swift 5, iOS12+:

class func gmGetNetWorkName() -> String {
        guard let reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, "www.google.com") else {
            return "NO INTERNET"
        }

        var flags = SCNetworkReachabilityFlags()
        SCNetworkReachabilityGetFlags(reachability, &flags)

        let isReachable = flags.contains(.reachable)
        let isWWAN = flags.contains(.isWWAN)

        if isReachable {
            if isWWAN {
                let networkInfo = CTTelephonyNetworkInfo()
                let carrierType = networkInfo.serviceCurrentRadioAccessTechnology

                guard let carrierTypeName = carrierType?.first?.value else {
                    return "UNKNOWN"
                }

                switch carrierTypeName {
                case CTRadioAccessTechnologyGPRS, CTRadioAccessTechnologyEdge, CTRadioAccessTechnologyCDMA1x:
                    return "2G"
                case CTRadioAccessTechnologyLTE:
                    return "4G"
                default:
                    return "3G"
                }
            } else {
                return "WIFI"
            }
        } else {
            return "NO INTERNET"
        }
    }
Gastón Antonio Montes
  • 2,559
  • 2
  • 12
  • 15